【发布时间】:2019-07-30 16:08:33
【问题描述】:
我正在尝试遍历员工 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
我没有任何多余的空格或任何东西,所以我不确定我错过了什么
【问题讨论】:
-
!r标头中的命令在执行其他任何操作之前运行。由于uniqueID不是内置的R 对象,它会导致错误。您应该在 YAML 标头中放置一个默认值,然后通过render()将特定值作为 here 传递。 -
所以我只是更改了代码以在默认值为 1 的情况下执行此操作,并且在渲染命令中我使用
render('Report.Rmd',params = list(MASTER_ID=unique(Salary$MASTER_ID)))仍然收到 YAML 错误 -
您应该一次传递一个值而不是值向量。
-
好的,如果我想处理一个值向量,我会为向量的每个值使用 for 循环?
-
是的。没错。
标签: r yaml r-markdown