7

我正在编写一个导出 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")
}

在此处输入图像描述

4

1 回答 1

4

通常的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()))

}

在此处输入图像描述

于 2021-05-06T07:30:08.310 回答