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

时间:2018-02-21 13:27:27

标签: r r-markdown knitr

我想在我的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
```

结果如下:

enter image description here

这是一个错误还是一个功能?对于我的观点,这与反直觉相反......

1 个答案:

答案 0 :(得分:3)

这不是错误或功能,但是预期。您在第一个代码块中设置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)
```