代码之家  ›  专栏  ›  技术社区  ›  balin

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

  •  5
  • balin  · 技术社区  · 7 年前

    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 回复  |  直到 7 年前
        1
  •  2
  •   Yihui Xie    7 年前

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

    ---
    params:
      first_level:
        value:
          second_level: ~
    ---
    
    ```{r}
    params
    ```
    

    这是目前 by design .