J_F*_*J_F 0 r knitr r-markdown
我想在我的 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
```
Run Code Online (Sandbox Code Playgroud)
结果如下:
这是错误还是功能?在我看来,这违反直觉......
这不是错误或功能,而是意料之中的。您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)
```
Run Code Online (Sandbox Code Playgroud)