bal*_*lin 5 yaml r rstudio knitr r-markdown
使用单级列表/字典来参数化rmarkdown文档时:
---
params:
first_level: ~
---
```{r}
params
```
Run Code Online (Sandbox Code Playgroud)
和针织返回预期的
## $first_level
## NULL
Run Code Online (Sandbox Code Playgroud)
我无法使用多级列表/字典作为编织
---
params:
first_level:
second_level: ~
---
```{r}
params
```
Run Code Online (Sandbox Code Playgroud)
生产Error: no value field specified for YAML parameter 'first_level'
Execution halted,我期待的地方
## $first_level
## $first_level$second_level
## NULL
Run Code Online (Sandbox Code Playgroud)
是否真的只支持一个级别列表或者我搞砸了什么?
正如我在下面评论的那样,可以使用预期的输出来实现
---
params:
first_level: !r list(second_level = NULL)
---
```{r}
params
```
Run Code Online (Sandbox Code Playgroud)
但是为什么要用yaml它代替参数化代码块呢?
params是 R Markdown 的特殊字段,您必须使用两种方式之一来指定参数的值:如果该值不是列表(例如标量),则可以使用正常的 YAML 语法指定它;但是,如果它是一个列表,R Markdown 需要一个名为 的子字段value,并且必须在此子字段中指定值。在您的情况下,您必须使用一个value字段,例如
---
params:
first_level:
value:
second_level: ~
---
```{r}
params
```
Run Code Online (Sandbox Code Playgroud)
目前这是设计使然。