r - 如何编写编写 rmarkdown 文件的 R 函数?
问题描述
是否可以创建一个编写 rmarkdown 文档的函数?例如,我想创建 3 个不同的 html_documents,其中包含 iris 数据集中不同物种的摘要。一些像下面(不工作的例子)
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)
解决方案
我会推荐一种稍微不同的方法。param
使用文件 yaml 中设置的物种值创建 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
:
推荐阅读
- c++ - 类型之间是否有类型特征检查包含?
- r - 未捕获的 ReferenceError:未定义闪亮
- azure - 是否可以找出 Azure 表的创建日期?
- julia - 通过 Julia 中的“中间”键查询的高效数据结构
- python - html 图像在 localhost 中显示为损坏的图像图标
- python - 根据列表中嵌套字典中的值删除字典元素
- python - django 如何解析其models.py 中的外键?
- javascript - 如何使用数据将 observableArray 传递给模板
- vue.js - VueX 未正确将数据存储在存储中
- sql-server - Laravel 在 mssql 数据库中插入数据时报错