有没有办法在 Rmarkdown 中指定全局选项块函数,以便通过切换命令仅 show/not 显示某些图形?

Is there a way to specify a global options chunk function in Rmarkdown so that only some of the graphs will show/not show by toggling the command?

我目前在 Rmarkdown 中有一个数字子集,但我想通过为那些数字指定 echo = Fecho = T 来隐藏或显示它们。遍历我想隐藏或显示的每个图形并更改 echo 选项是很乏味的。是否有一种全局方式来切换或显示某些数字?换句话说,有没有办法做到:

```{r, echo.func}
include.graphics("this/plot/shows.jpg")
```

并能够以某种方式控制 echo.func 等于 echo = Fecho = T 一开始?谢谢!

echo=的参数可以是一个完整的表达式,所以你可以定义个别块。像这样:

---
title: echo test
output: html_document
---

```{r setup, echo = FALSE, include = FALSE}
echolist <- c("plots", "table2")
```

```{r table1, echo = any(c("tables", "table1") %in% echolist)}
# mtcars[1:3,]
```

```{r plot1, echo = any(c("plots", "plot1") %in% echolist)}
# plot(1)
```

```{r table2, echo = any(c("tables", "table2") %in% echolist)}
# mtcars[5:10,]
```

```{r plot2, echo = any(c("plots", "plot2") %in% echolist)}
# plot(2)
```

据此,我认为编写一个传递块名称(例如,{r blockname, echo=checkecho("blockname")})的函数是可行的,并且它在内部执行一些可能检查文字标题、模式、组、等等


功能化建议:

---
title: echo test
output: html_document
---

```{r setup, echo = FALSE, include = FALSE}
.checkecho <- function(nm) {
  any(c(nm, gsub("\d+$", "s", nm)) %in% c("plots", "table2"))
}
```

```{r table1, echo = .checkecho("table1")}
# mtcars[1:3,]
```

```{r plot1, echo = .checkecho("plot1")}
# plot(1)
```

```{r table2, echo = .checkecho("plot2")}
# mtcars[5:10,]
```

```{r plot2, echo = .checkecho("table2")}
# plot(2)
```

最大的take-away就是让你想出一个命名标准,方便你的工作。在这个例子中:

  • 一切都以预期输出的简单描述开始,以数字结束(不需要递增*耸肩*);
  • 您可以通过指定特定块或删除数字并添加 "s"
  • 来控制单个 echo-ing

您可以轻松地将其变成否定策略,您可以在其中关闭特定元素……可能性很多,这可能是为什么 rmarkdownknitr 中还没有函数的原因这有助于实现这一目标。

(如果你很好奇......我选择以点开始函数名称,这样,如果出于某种原因你在报告中包含 ls() 的输出,该函数将不会包括在内。要查看它,您需要执行 ls(all.names=TRUE)。*耸肩*)