假设我有很多模型,我想在单独的表中总结。一种方法是在
modelsummary
调用中写出每个模型,如下所示
library(modelsummary)
fit_1 <- lm(vs ~ am, data=mtcars)
fit_2 <- lm(mpg ~ am, data=mtcars)
modelsummary(
models = list('First Model' = fit_1),
statistic = c(
'Std.Error' = 'std.error',
'P val' = 'p.value',
'Lower' = 'conf.low',
'Upper' = 'conf.high'),
gof_map = NA,
shape= term ~ statistic
)
modelsummary(
models = list('Second Model' = fit_2),
statistic = c(
'Std.Error' = 'std.error',
'P val' = 'p.value',
'Lower' = 'conf.low',
'Upper' = 'conf.high'),
gof_map = NA,
shape= term ~ statistic
)
当我使用四开来渲染 pdf 时,这会按预期生成两个模型摘要。然而,可以想象,这对于多个模型都会重复,特别是如果我想稍微更改一下表格。因此,我可以编写一个函数来制作这些表
models<- list(
'First Model'=fit_1,
'Secpond Model' = fit_2
)
do_modelsummary <- function(model, model_name){
mod <- list(model)
names(mod) <- model_name
modelsummary(
models = mod,
statistic = c(
'Std.Error' = 'std.error',
'P val' = 'p.value',
'Lower' = 'conf.low',
'Upper' = 'conf.high'),
gof_map = NA,
shape= term ~ statistic
)
}
然后我可以按如下方式循环访问列表
for(i in length(models)) {
fit <- models[[i]]
nm <- names(models)[[i]]
do_modelsummary(fit, nm)
}
此不会在渲染 pdf 时显示表格。此外,
purrr::imap
——更简洁地做到这一点——尝试渲染 pdf 时出错。
purrr::imap(models, do_modelsummary)
ERROR:
compilation failed- error
File ended while scanning use of \@xverbatim.
<inserted text>
\par
<*> Untitled.tex
see Untitled.log for more information.
如果我想单独显示多个模型摘要并渲染为 pdf,首选方法是什么不单独执行每个表。
似乎这里的关键是在执行循环的代码块中设置
results='asis'
。然后,循环和对 imap
的调用渲染表格。