在Rmarkdown中隐藏R代码的一部分

时间:2017-07-26 16:02:25

标签: r knitr r-markdown

如何在Rmarkdown中省略部分块?

例如:

```{r echo T, eval = T}
df <- readRDS("yourfile.RDS")
df <- readRDS("secretfile.RDS") ### NEED TO OMIT THIS PART ONLY
df
```

我知道include = Fecho = F选项,但会省略df的输出或完全省略代码。

或者,我可以这样做:

```{r echo T, eval = F}
df <- readRDS("yourfile.RDS")
```
```{r echo = F, eval = T}
df <- readRDS("secretfile.RDS") ### NEED TO OMIT THIS PART ONLY
```
```{r eval = T, echo = T}
df
```

但这是一种笨重的方式来实现它并且它会削减代码块。输出应如下所示:

df <- readRDS("yourfile.RDS")
df

随后输出df

谢谢!

编辑:"yourfile.RDS"是我的文档中用于演示目的的占位符。因此,无法评估代码行df <- readRDS("yourfile.RDS")

2 个答案:

答案 0 :(得分:6)

echo参数可以包含数字,而不只是TRUEFALSE。它们被视为块中表达式向量的索引。

为了隐藏第二行代码,请使用echo = -2

eval参数也接受索引,但如果您将其设置为不是eval,它会显示带注释标记的内容,因此您无法(轻松?)显示第1行但是执行第2行。您可以这样做:

```{r eval=-1, echo=-2}
a <- 1
b <- 2
c <- 3
```

并且第1行不会被执行。块将显示为

## a <- 1
c <- 3

答案 1 :(得分:1)

您可以隐藏代码,但将其置于未评估的代码块之上。然后在未评估的代码块(显示)之后,您可以创建另一个已评估但隐藏的代码块,该代码块将返回您的df。

例如:

```{r echo = F, eval = T}
df <- readRDS("secretfile.RDS") ### NEED TO OMIT THIS PART ONLY
```
```{r echo = T, eval = F}
df <- readRDS("yourfile.RDS")
df
```
```{r echo = F, eval = T}
df
```

OP在这里。谢谢@be_green!只需略微改进上面的代码:

```{r echo = T, eval = F}
df <- readRDS("yourfile.RDS")
df
```
```{r echo = F, eval = T}
df <- readRDS("secretfile.RDS") ### NEED TO OMIT THIS PART ONLY
df
```