2017-11-14 16 views
5

Trong khi sử dụng một mức đơn danh sách/từ điển cho parameterizing một tài liệu hoạt động:Cách tạo một từ điển đa cấp trong siêu dữ liệu YAML của R Markdown?

--- 
params: 
    first_level: ~ 
--- 

```{r} 
params 
``` 

và đan trả về dự kiến ​​

## $first_level 
## NULL 

Tôi không thể sử dụng danh sách đa cấp/từ điển như đan

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

```{r} 
params 
``` 

sản xuất Error: no value field specified for YAML parameter 'first_level' Execution halted, nơi tôi mong đợi

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

Có thực sự chỉ có một danh sách cấp duy nhất được hỗ trợ hay tôi đang làm gì?

Như tôi đã nhận xét dưới đây, sản lượng dự kiến ​​có thể đạt được bằng

--- 
params: 
    first_level: !r list(second_level = NULL) 
--- 

```{r} 
params 
``` 

Nhưng tại sao sử dụng yaml sau đó ở tất cả ở vị trí của một khối mã parametrizing?

+1

Bạn chỉ có thể sử dụng 2 cấp và tên cấp hai phải là 'giá trị'. Hãy thử điều này: 'params: first_level: value: ~'. Thay đổi 'value' thành' second_level' sẽ đưa ra lỗi ... –

+0

Làm cho nội dung của 'first_level' thành'! R list (second_level = NULL) 'tạo ra cái tôi muốn/mong đợi, nhưng đánh bại việc sử dụng' yaml' thành bắt đầu với ... – balin

+1

Tôi nghĩ rằng đây là một lỗi của RStudio IDE (vì 'rmarkdown :: render()' works). Bạn có thể gửi nó đến https://github.com/rstudio/rstudio/issues. Cảm ơn! –

Trả lời

2

params là trường đặc biệt cho R Markdown và bạn phải sử dụng một trong hai cách để chỉ định giá trị của tham số: nếu giá trị không phải là danh sách (ví dụ: vô hướng), bạn có thể chỉ định cú pháp YAML bình thường; tuy nhiên, nếu nó là một danh sách, R Markdown mong đợi một trường con có tên là value và giá trị phải được chỉ định trong trường con này. Trong trường hợp của bạn, bạn phải sử dụng một lĩnh vực value, ví dụ,

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

```{r} 
params 
``` 

Đó là hiện by design.

+0

Cảm ơn bạn đã chỉ ra điều này - tuy nhiên bất tiện có thể là ... – balin

Các vấn đề liên quan