如何将多个模型摘要调用渲染到我的 pdf 中?

问题描述 投票:0回答:1

假设我有很多模型,我想在单独的表中总结。一种方法是在

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,首选方法是什么单独执行每个表。

r quarto modelsummary
1个回答
0
投票

似乎这里的关键是在执行循环的代码块中设置

results='asis'
。然后,循环和对
imap
的调用渲染表格。

© www.soinside.com 2019 - 2024. All rights reserved.