我想使用冗长的数据框,但只在幻灯片中显示部分数据框。
```{r}
df1 = data.frame(x = rnorm(100), y = rnorm(100))
df1
```
正如您可能猜到的,这会产生不适合演示文稿幻灯片的输出。
```{r eval=-2, echo=-3}
df1 = data.frame(x = rnorm(100), y = rnorm(100))
df1
head(df1)
```
这会产生:
df1 = data.frame(x = rnorm(100), y = rnorm(100))
## df1
x y
1 0.7699 -0.1683
2 -0.4756 0.3885
3 -0.6744 1.2755
4 -0.8533 -2.1271
5 -1.9129 -1.2661
6 -0.4567 0.5607
但我不希望第二个代码行被注释掉。目前,我能想出的唯一方法是使用两个单独的代码块,因为eval=FALSE
在应用于整个块时不会产生注释代码。
这产生了我想要的东西:
```{r eval=FALSE}
df1 = data.frame(x = rnorm(100), y = rnorm(100))
df1
```
```{r echo=FALSE}
df1 = data.frame(x = rnorm(100), y = rnorm(100))
head(df1)
```
但显然,如果我更改代码,我必须在两个地方更改它。这是一个简单的例子,但是对于更复杂的代码,我编辑代码和结果时会有更大的危险。
答案 0 :(得分:2)
试试这个:
```{r include = FALSE}
library(knitr)
op <- knit_hooks$get()$source
knit_hooks$set(source = function(x, options) op(if(is.numeric(options$eval)) x[options$eval] else x, options))
```
```{r eval=-2, echo=-3}
df1 = data.frame(x = rnorm(100), y = rnorm(100))
df1
head(df1)
```
这适用于简单的情况,但如果要合并echo
和eval
,则需要进行优化。