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

时间:2014-08-18 00:26:40

标签: r knitr r-markdown

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

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

谢谢。

2 个答案:

答案 0 :(得分:17)

knitr选项可以表示为R表达式。每the "output" documentation on the knitr webpage

  

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

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

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

```{r conditional, eval = doNextChunk}
"hello world!"
```

答案 1 :(得分:2)

opts_chunk$set()就是你所追求的。任何“设置”将是后续块的默认值(除非在逐块的基础上被覆盖)

```{r setup}
library(knitr)
opts_chunk$set(eval = TRUE, include= TRUE)
````

然后您可以根据需要进行更改。