如何将带有参数的子文档编织到主 RMarkdown 文档中?
How do I knit child documents with parameters into a main RMarkdown document?
我有一个参数化的 RMarkdown 文件,parameterized.Rmd
,包含以下内容。
---
title: "Parameterized report"
output: html_document
params:
input_df: NULL
---
```{r sec1}
head(params$input_df[, 1:2])
```
我可以使用 rmarkdown::render
从控制台编织它,为不同的数据帧输入生成不同的文档。这按预期工作。
rmarkdown::render("parameterized.Rmd",
params = list(input_df = mtcars),
output_file = "cars.html")
rmarkdown::render("parameterized.Rmd",
params = list(input_df = iris),
output_file = "iris.html")
我想让这些结果中的每一个成为公共文档的子文档。我的第一次尝试是使用 knitr::knit_child
,但它没有将 params
作为参数。所以这失败了。
---
title: "Main report"
output: html_document
---
```{r test-cars}
knitr::knit_child("parameterized.Rmd", envir = environment(), quiet = T,
params = list(input_df = mtcars))
```
如何将需要参数的子文档编织在一起?
什么对我有用(一旦我正确理解它,就从 documentation 中得出。):
不使用 YAML header 中的 params
字段,而是在主文档中设置参数值并在 knitr::knit_child
的输出上调用 cat
.以下文件达到了预期的效果。
parameterized.Rmd
---
title: "Parameterized report"
output: html_document
---
```{r}
head(df[, 1:2])
```
main.Rmd
---
title: "Main report"
output: html_document
---
# mtcars
```{r mtcars, echo=FALSE, results='asis'}
df <- mtcars
cat(
knitr::knit_child('parameterized.Rmd', envir = environment(), quiet = TRUE)
)
```
# iris
```{r iris, echo=FALSE, results='asis'}
df <- iris
cat(
knitr::knit_child('parameterized.Rmd', envir = environment(), quiet = TRUE)
)
```
Knitting main.Rmd
将参数化报告应用于每个数据框。
我有一个参数化的 RMarkdown 文件,parameterized.Rmd
,包含以下内容。
---
title: "Parameterized report"
output: html_document
params:
input_df: NULL
---
```{r sec1}
head(params$input_df[, 1:2])
```
我可以使用 rmarkdown::render
从控制台编织它,为不同的数据帧输入生成不同的文档。这按预期工作。
rmarkdown::render("parameterized.Rmd",
params = list(input_df = mtcars),
output_file = "cars.html")
rmarkdown::render("parameterized.Rmd",
params = list(input_df = iris),
output_file = "iris.html")
我想让这些结果中的每一个成为公共文档的子文档。我的第一次尝试是使用 knitr::knit_child
,但它没有将 params
作为参数。所以这失败了。
---
title: "Main report"
output: html_document
---
```{r test-cars}
knitr::knit_child("parameterized.Rmd", envir = environment(), quiet = T,
params = list(input_df = mtcars))
```
如何将需要参数的子文档编织在一起?
什么对我有用(一旦我正确理解它,就从 documentation 中得出。):
不使用 YAML header 中的 params
字段,而是在主文档中设置参数值并在 knitr::knit_child
的输出上调用 cat
.以下文件达到了预期的效果。
parameterized.Rmd
---
title: "Parameterized report"
output: html_document
---
```{r}
head(df[, 1:2])
```
main.Rmd
---
title: "Main report"
output: html_document
---
# mtcars
```{r mtcars, echo=FALSE, results='asis'}
df <- mtcars
cat(
knitr::knit_child('parameterized.Rmd', envir = environment(), quiet = TRUE)
)
```
# iris
```{r iris, echo=FALSE, results='asis'}
df <- iris
cat(
knitr::knit_child('parameterized.Rmd', envir = environment(), quiet = TRUE)
)
```
Knitting main.Rmd
将参数化报告应用于每个数据框。