rmarkdown:以编程方式操作块选项?

时间:2016-03-16 13:08:48

标签: r knitr r-markdown

是否可以采用rmarkdown文件,以编程方式操作块选项,然后基于修改后的文档knit

我有一些我希望purl的rmarkdown文件,其中包含所有代码(甚至包含eval=FALSE的代码)。

此时,我最好的猜测是我可以(1)使用sedeval=FALSE切换为eval=TRUE,然后(2)purl。但是如果有更好的东西,我会喜欢,例如:

parsed_rmd <- knitr::parse_rmd('my_rmarkdown.rmd')
for (chunk in parsed_rmd) {
 chunk$eval <- TRUE
}
knitr::purl(parsed_rmd, output = 'my_rmarkdown_as_r.R'

1 个答案:

答案 0 :(得分:2)

您可以设置&#39; eval&#39;基于参数的逻辑条件的块选项。

创建一个Rmarkdown(.Rmd)文件并在YAML标头中定义参数:

params:
     eval_optional: no

设置&#39; eval&#39;您可能不希望显示的代码块选项,以测试此参数的值:

```{r optional_code, eval= (params$eval_optional == "Yes")}
# chunk with code you only want to show sometimes
```

然后使用适当的参数调用rmarkdown_render

rmarkdown::render(file = "myreport.rmd", params = list(eval_optional = "yes")

有关使用参数的更多信息,请参阅http://rmarkdown.rstudio.com/developer_parameterized_reports.html