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')`
我熟悉 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')`