【问题标题】:Conditional `echo` (or eval or include) in rmarkdown chunksrmarkdown 块中的条件 `echo`(或 eval 或 include)
【发布时间】:2014-08-18 00:26:39
【问题描述】:

我想创建一个有条件地“执行”一些块的 Rmarkdown 文档(pdf 或 html)。我想到的特殊情况是,我可能想要一个更详细和记录的输出版本供同事内部审查,以及一个更短的版本供外部消费者使用。我可能不想或不需要向客户展示数据操作步骤,而只是关键图形和表格。我也不想制作两个单独的文档,或者必须手动指示要显示或不显示的内容。

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

谢谢。

【问题讨论】:

    标签: r knitr r-markdown


    【解决方案1】:

    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!"
    ```
    

    【讨论】:

    • 这让我走上了正轨。我在文档开头设置了一个变量draft &lt;-TRUE。它采用FALSE 进行生产运行。然后,在我希望能够打开或关闭显示的任何块中,我将include=draft 添加到我希望能够切换的所有特定块中。谢谢!
    • 是否也可以通过这种方式更改块标签?
    • 另外,是否可以使用render将参数作为参数传递(即使用render时指定doNextChunk作为参数)?
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-11
      • 1970-01-01
      • 2012-09-01
      相关资源
      最近更新 更多