r - Rmarkdown 文件的参数化
问题描述
我正在尝试遍历员工 ID 列表,为每个 ID 创建一个报告。
我知道我必须在 YAML 中声明参数,但我遇到了扫描仪错误。
---
title: "Employee Record"
params:
MASTER_ID: !r uniqueID
output: pdf_document
---
**Employee ID:** `r params$MASTER_ID`
数据集中的员工 ID 字段称为 MASTER_ID,uniqueID 只是每个唯一员工 ID 的列表(长度 = 880)
我得到的错误是:
Error in yaml::yaml.load(string, ...) :
Scanner error: while scanning a simple key at line 3, column 1 could not find expected ':' at line 4, column 1
我没有任何额外的空格或任何东西,所以我不确定我错过了什么
解决方案
要跟进其他人已经说过的内容,最好使用该rmarkdown::render
函数从单独的 R 文件中调用您的 Rmd。这也使您可以轻松控制文件命名和输出位置。
employees <- 1:10
for (i in employees) {
rmarkdown::render("test_pdf.Rmd",
params = list(MASTER_ID = i),
output_file = paste0('employee-', i, ".pdf"),
output_dir = '/reports')
}
包含test_pdf.Rmd
:
title: "Employee Record"
params:
MASTER_ID:
value: 1
output: pdf_document
---
**Employee ID:** `r params$MASTER_ID`
推荐阅读
- c++ - Rcpp 中的双倍总和
- javascript - 点击时的jquery插件不适用于动态内容
- python-2.7 - 从 PyQt 中的线程修改模型数据
- c# - C# - 为什么在 OnClick 动画之前触发 OnClick 事件?(NuGet - MaterialSkin)
- java - 将java限制为64MB内存
- javascript - Youtube API v3 获取上传某个视频的用户的频道 ID
- python - “TclError: image”,同时将图像添加到标签
- parceljs - 有没有办法像在 Webpack 中一样在 Parcel 中代理请求?
- karate - 空手道 - 匹配两个复杂的洗牌 json
- ios - 在 Swift 4 中显示实时时间标签?