在 rmarkdown::render 不工作的循环中打印 gt table

Printing gt table inside a loop with rmarkdown::render not working

我正在编写导出 html 的报告生成器。我使用两个文件,第一个是一个循环,它将确定报告的数量,在我的 .Rmd 模板中,我有另一个循环来打印几个表格。

下面的 .Rmd,工作正常

    ---
title: "Report"
author: "Me"
date: "`r format(Sys.time(), '%d de %B de %Y')`"
output:
  html_document
---

# First Section


```{r , results='asis', echo=FALSE, message=FALSE}
library(tidyverse)
library(gt)

i=1

df <- cbind(m=c(rep(1,16),rep(2,16)),mtcars)

gears <- unique(df$gear)

for(g in gears)
{
  cat("## gear", g, "\n")
  
  print(
  df %>% filter(gear==g & m==i) %>%
    gt()
  )
}

输出

但如果从外部文件调用它并渲染表不显示

library(tidyverse)
library(gt)

df <- cbind(m=c(rep(1,16),rep(2,16)),mtcars)

for (i in 1:2) 
{

  rmarkdown::render(
    'report_template_2.Rmd', output_file = paste0("report", 
                                                    "_",i, 
                                                  '.html'), encoding="UTF-8")
}

通常的 htmltools::tagList 技巧似乎有效。
没有深入研究 render 内部结构以试图理解为什么它的行为与手动编织不同。

---
title: "Report"
author: "Me"
date: "`r format(Sys.time(), '%d de %B de %Y')`"
output:
  html_document
---

# First Section

```{r,eval=F,echo=F}
gt(mtcars)
```


```{r , results='asis', echo=FALSE, message=FALSE}
library(tidyverse)
library(gt)

i=1

df <- cbind(m=c(rep(1,16),rep(2,16)),mtcars)

gears <- unique(df$gear)

l <- list()
i<-1
for(g in gears)
{
  cat("## gear", g, "\n")
  
  print(htmltools::tagList(df %>% filter(gear==g & m==i) %>% gt()))

}