3

使用块选项eval=FALSE可以在 RMarkdown 文件或 R Notebook 被编织时抑制块评估。有没有办法在 RStudio 中交互式运行文档时应用它(即,让“运行所有块”跳过某些块)?

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

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

4

1 回答 1

2

设置knitr::opts_chunk并且knitr::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)
```

按“运行上面的所有块”:

在此处输入图像描述

针织:

在此处输入图像描述

于 2017-07-11T17:19:03.347 回答