有没有办法在 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 = F
或 echo = T
来隐藏或显示它们。遍历我想隐藏或显示的每个图形并更改 echo 选项是很乏味的。是否有一种全局方式来切换或显示某些数字?换句话说,有没有办法做到:
```{r, echo.func}
include.graphics("this/plot/shows.jpg")
```
并能够以某种方式控制 echo.func
等于 echo = F
或 echo = 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
您可以轻松地将其变成否定策略,您可以在其中关闭特定元素……可能性很多,这可能是为什么 rmarkdown
或 knitr
中还没有函数的原因这有助于实现这一目标。
(如果你很好奇......我选择以点开始函数名称,这样,如果出于某种原因你在报告中包含 ls()
的输出,该函数将不会包括在内。要查看它,您需要执行 ls(all.names=TRUE)
。*耸肩*)
我目前在 Rmarkdown 中有一个数字子集,但我想通过为那些数字指定 echo = F
或 echo = T
来隐藏或显示它们。遍历我想隐藏或显示的每个图形并更改 echo 选项是很乏味的。是否有一种全局方式来切换或显示某些数字?换句话说,有没有办法做到:
```{r, echo.func}
include.graphics("this/plot/shows.jpg")
```
并能够以某种方式控制 echo.func
等于 echo = F
或 echo = 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
您可以轻松地将其变成否定策略,您可以在其中关闭特定元素……可能性很多,这可能是为什么 rmarkdown
或 knitr
中还没有函数的原因这有助于实现这一目标。
(如果你很好奇......我选择以点开始函数名称,这样,如果出于某种原因你在报告中包含 ls()
的输出,该函数将不会包括在内。要查看它,您需要执行 ls(all.names=TRUE)
。*耸肩*)