如何在 knitr RMD 文件中设置不同的全局选项

How to set different global options in knitr RMD file

我想在我的 RMD 文件中排除很多代码块,并且想在之前使用 eval = FALSE 设置全局选项,然后再使用 eval = TRUE 设置全局选项。但这是行不通的。

这是一个玩具示例:

---
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE, eval = FALSE)
```
## will not be executed because global option `eval = FALSE`
```{r}
x+y
```

```{r setup II, include=FALSE}
knitr::opts_chunk$set(eval = TRUE, echo = TRUE)
```
## Should give `2` in final document, because eval = TRUE
## NOT working as expected
```{r}
1+1
```

## This is working as expected
```{r, eval = TRUE}
1+1
```

这里是结果:

这是错误还是功能?在我看来,这是违反直觉的……

这不是错误或功能,而是意料之中的。您在第一个代码块中设置了 eval = FALSE,这意味着将不会评估第二个代码块,因此根本不会执行 knitr::opts_chunk$set(eval = TRUE, echo = TRUE)。然后eval对于第三个代码块仍然是FALSE

您需要在第二个代码块上设置eval = TRUE

```{r setup II, include=FALSE, eval=TRUE}
knitr::opts_chunk$set(eval = TRUE, echo = TRUE)
```