论点为echo=
可以是一个完整的表达式,所以你可以定义classes or 个人块。像这样的东西:
---
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)
```
这样做的最大收获是您可以提出一个有利于您工作的命名标准。在这个例子中:
- 一切都以预期输出的简单描述开始,以数字结束(不需要递增*耸肩*);
- 您可以通过指定特定块或删除数字并添加“s”来控制单独的回显
您可以轻松地将其转变为否定策略,您可以在其中关闭特定元素...可能性有很多,并且可能是为什么中还没有函数的原因rmarkdown
or knitr
这有利于这一点。
(如果你好奇......我选择以点开头函数名称,这样,如果由于某种原因你包含了来自的输出ls()
在您的报告中,不会包含该功能。要看到它,你需要做ls(all.names=TRUE)
。 *耸耸肩*)