是否可以创建写rmarkdown文档的函数?例如,我想创建3个不同的htlml_documents,其中包含虹膜数据集中不同物种的摘要。如下所示(不适用示例)
markdown_function <- function(function_input){
---
title: "Untitled"
date: "November 14, 2018"
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
```{r iris}
summary(iris[iris$Species == function_input, ])
```
}
apply(data.frame(species = c('setosa', 'versicolar', 'virginica')), 1, markdown_function)
答案 0 :(得分:2)
我建议使用稍微不同的方法。为文件的Yaml中设置的种类创建一个param
值的RMarkdown文件。使用该值进行过滤。然后在另一个脚本中,使用您的apply
函数为每种物种编织RMarkdown文件。
RMarkdown,另存为iris_params.Rmd
---
title: "Parameterized iris summary"
date: "November 14, 2018"
output: html_document
params:
species: setosa
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
```{r iris}
species <- params$species
summary(iris[iris$Species == species, ])
```
渲染脚本:
species <- c("setosa", "versicolor", "virginica")
sapply(species, function(x) {
rmarkdown::render(input = "iris_params.Rmd",
output_file = sprintf("iris_params_%s.html", x),
params = list(species = x))
})
这将创建3个HTML文件,每个设置为参数的物种都一个。请注意,默认情况下,将仅使用与输入文件相同的名称来创建文件,只是对扩展名进行了适当的更改,因此您需要为每个参数值创建输出文件名。我正在使用sprintf
进行操作,并将种类的值添加到基本文件名上。
输出,iris_params_virginica.html
: