【问题标题】:Conditional evaluation of knitr chunks with Rstudio "Run" button使用 Rstudio“运行”按钮对 knitr 块进行条件评估
【发布时间】:2018-05-27 01:37:44
【问题描述】:

我正在使用块头中的eval 选项进行条件评估。如果我在标题中写eval=FALSE,则在我编织文档时不会评估块,当我使用 Rstudio 菜单中的 Run All (Ctrl+Alt+R) 时也不会评估。

当我尝试为eval 提供一个变量时,问题就出现了,例如下面的例子:

```{r setup}
ev_cars = TRUE
ev_pressure = FALSE
```

## First chunk

```{r cars, eval=ev_cars}
summary(cars)
```

## Second chunk

```{r pressure, echo=FALSE, eval = ev_pressure}
plot(pressure)
```

在本例中,当我运行 knitr 时,会评估第一个块,而不会评估第二个块(因为 ev_pressure=FALSE)。但是,当我尝试使用 Rstudio 菜单中的 Run All (Ctrl+Alt+R) 运行时,会评估两个块。

有没有办法解决这个问题?

我正在使用 Rstudio v 1.1

一切顺利,

吉尔

【问题讨论】:

    标签: rstudio knitr r-markdown


    【解决方案1】:

    编辑:{区块选项仅在您knit 时使用。 Run All 命令不会编织文档,而是执行块内的内容,而不读取块参数。} 这并不完全正确,事实上,如果 eval 设置为 FALSE 或 TRUE,它会被纳入帐户。
    {因此,一个} 添加选项的方法,例如在运行 Run All 时不执行块内的代码,将以旧方式在块内使用 if 执行此操作。

    ```{r setup}
    ev_cars = TRUE
    ev_pressure = FALSE
    ```
    
    ## First chunk
    
    ```{r cars}
    if (ev_cars) {
      summary(cars)
    }
    ```
    
    ## Second chunk
    
    ```{r pressure, echo=FALSE}
    if (ev_pressure) {
      plot(pressure)
    }
    ```
    

    这样代码就更重了。但是如果你使用Run All,为什么不直接编织呢?

    【讨论】:

    • 谢谢塞巴斯蒂安。有一些块参数评估,因为当eval=F 时,块不使用 Run 执行。我给出了 Run All 案例,作为一个可理解且可重现的示例。在现实生活中,我会评估脚本中的某些点。
    • 没错,我没有意识到这一点。如果为 TRUE 或 FALSE,则考虑 eval 参数,但如果是参数,则不考虑。
    猜你喜欢
    • 2016-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 1970-01-01
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    相关资源
    最近更新 更多