Rmarkdown块的多个组(类型)的多组全局选项

时间:2017-08-14 08:00:27

标签: r knitr r-markdown options

我的文档中有很多块,其中一些并排产生2个图,有些产生3个图并且其他一些只是用于显示结果(其中一些甚至回显代码)。我可以为文档设置全局knitr选项,如下所示;

```{r setup, include = FALSE, cache = FALSE}
knitr::opts_chunk$set(
  comment = NA,
  fig.width = 7,
  out.width = 50%,
  warning = FALSE
)
```

但是我想设置多组这样的全局选项,以便有些人将数字块并排放置,并且有些目标是结果输出。

由于选项只是一个列表,我可以创建多个不同选项的列表,但我想知道如何在这些单独的块中包含这些选项?

1 个答案:

答案 0 :(得分:3)

我建议使用option hooks来完成这项工作。只要设置了某个块选项(即,不是NULL),相应的选项挂钩就会运行并设置所需的块选项。

以下示例定义了两组规则:" chatty"在输出前打印提示符和非常有趣的符号,而" silent"抑制提示并在输出前不打印任何内容。

同样,您可以根据需要设置fig.widthout.width

```{r, echo = FALSE}
library(knitr)
opts_hooks$set(chatty = function(options) {
  options$prompt = TRUE
  options$comment = ";-)"
  return(options)
})

opts_hooks$set(silent = function(options) {
  options$promt = FALSE
  options$comment = ""
  return(options)
})
```

# Demo

## Default

```{r}
print("Default")
```

## Chatty

```{r, chatty = TRUE}
print("chatty")
```

## Silent

```{r, silent = TRUE}
print("silent")
```