防止R Notebook交互式中的块评估

时间:2017-07-11 16:10:22

标签: r rstudio r-markdown rnotebook

使用块选项eval=FALSE可以在RMarkdown文件或R Notebook编译时抑制块评估。有没有办法在RStudio中交互运行文档时进行此操作(即,制作"运行所有块"跳过某些块)?

我在分析开始时有一些块需要一段时间才能运行,后面的部分并不依赖。我希望能够获取代码的重要部分,以便我可以继续编写下游内容,而不必手动逐块地执行,这样我就可以避免在工作区中不需要的部分进一步写作。

我已经设置了rmarkdown文档,其逻辑参数旨在改变代码的哪些部分需要运行 - 我将这些作为控制标志,用于代码实际完成和使用时,但我希望我可以使用这些相同的参数来排除以交互模式运行的块(即类似eval=params$run_part1)。

1 个答案:

答案 0 :(得分:1)

设置knitr::opts_chunkknitr::opts_hooks只能在编织时帮助您,而不是在交互模式下,所以尽管我错了,但我会暂时说您无法控制这种行为还有动态块选项。

作为一种解决方法,您可以使用interactive()if块,以便代码仅在编织时运行。它也可以与您的逻辑参数很好地融合,尽管必须处于括号区块中。

---
title: "R Notebook"
output:
  html_document: default
  html_notebook: default
---

```{r}
if (!interactive()) {
  print("long running code")
}
```

```{r}
print(2)
```

```{r}
print(3)
```

按"运行上面的所有块":

enter image description here

针织:

enter image description here