rmarkdown块中的条件`echo`(或eval或include)

CJG*_*rey 18 r knitr r-markdown

我想创建一个Rmarkdown文档(pdf或html),它有条件地"执行"了一些块.我想到的具体情况是,我可能想要一个更详细和文档化的输出版本供同事进行内部审查,并为外部消费者提供更短版本.我可能不想或不需要向客户端显示数据操作步骤,而只需要关键的图形和表格.我也不想制作两个单独的文件或者必须手动指出要显示的内容.

有没有办法在Rmd的开头设置一个开关,表示例如,verbose = T将运行所有块或verbose = F切换echo = F(或include = F)?

谢谢.

Tho*_*mas 20

knitr选项可以表示为R表达式.根据knitr网页上的"输出"文档:

请注意,knitr中的所有选项都可以从R表达式中获取值,这会带来主要手册中引入的条件评估功能.简而言之,eval=dothis意味着eval的实际价值取自dothis全球环境中命名的变量; 通过操纵这个变量,我们可以打开/关闭一批块的评估.

换句话说,如果你写一些块,如:

```{r label}
doNextChunk <- as.logical(rbinom(1,1,.5))
```

```{r conditional, eval = doNextChunk}
"hello world!"
```
Run Code Online (Sandbox Code Playgroud)

  • 这让我走上了正轨。我在文档的开头设置了一个变量“draft &lt;-TRUE”。对于生产运行,它采用“FALSE”。然后,在我希望能够打开或关闭显示的任何块中,我将 `include=draft` 添加到我希望能够切换的所有特定块中。谢谢! (2认同)