如何在R Markdown的YAML元数据中创建多级字典?

时间:2017-11-14 11:42:48

标签: r yaml rstudio knitr r-markdown

使用单级列表/字典来参数化rmarkdown文档时可以使用:

---
params:
  first_level: ~
---

```{r}
params
```

和编织返回预期的

## $first_level
## NULL

我无法使用多级列表/字典作为编织

---
params:
  first_level:
    second_level: ~
---

```{r}
params
```

生成Error: no value field specified for YAML parameter 'first_level' Execution halted,我希望

## $first_level
## $first_level$second_level
## NULL

是否真的只支持一个级别列表或者我搞砸了什么?

正如我在下面评论的那样,可以使用

实现预期的输出
---
params:
  first_level: !r list(second_level = NULL)
---

```{r}
params
```

但是为什么要使用yaml代替参数化代码块?

1 个答案:

答案 0 :(得分:2)

params是R Markdown的特殊字段,您必须使用以下两种方法之一来指定参数的值:如果值不是列表(例如,标量),则可以指定它使用正常的YAML语法;但是,如果它是一个列表,则R Markdown需要一个名为value的子字段,并且必须在该子字段中指定该值。在您的情况下,您必须使用value字段,例如,

---
params:
  first_level:
    value:
      second_level: ~
---

```{r}
params
```

目前是by design