R markdown 使用不同的参数重新运行报告的同一部分

R markdown rerun the same section of report with different parameter

我熟悉 R markdown "parameters"。

但是,假设我想为 5 个不同的区域生成相同的报告(相同的图表,相同的 table)。

有没有办法在循环中优雅地执行此操作,或者 lapply 或者我是否需要制作多个部分。所以在伪代码中我想做类似的事情:

for(i in 1:5):
   Bunch of text
   table[i]
   plot[i]

而不是

bunch of text
table[1]
plot[1]

bunch of text
table[2]
plot[2]

...

换句话说,我想函数化一个 "section" 的报表,然后我可以调用

for(i in 1:5):
   makeReport(i)

它会进去,放入与索引 i 相关联的文本、数字等。

如果在 for 循环中,您必须显式调用 print:

```{r}
for(i in 1:2) {
  print(summary(cars[,-i]))
  plot(cars[,-i])
}
```

```{r}
makeReport <- function(i) {
  print(summary(cars[,-i]))
  plot(cars[,-i])
}

for(i in 1:2) {
  makeReport(i)
}
```

更新

正如 Stéphane Laurent 在 Dynamic number of calls to a chunk with knitr

中所展示的那样

你可以定义一个子.rmd:

test_section.rmd

Header: `r i`-th cars

```{r}
  print(summary(cars[,-i]))
  plot(cars[,-i])
```

并在主 rmd 文件中连接结果:

```{r runall, include=FALSE}
out <- NULL
for (i in 1:2) {
  out <- c(out, knitr::knit_child('test_section.rmd'))
}
```

`r paste(out, collapse = '\n')`