多个Rmarkdown代码块类型的多组全局选项设置

4

我在文档中有很多块,其中一些会产生两个并排的图形,一些则会产生三个并排的图形,还有一些仅用于显示结果(其中一些甚至回显代码)。我可以为该文档设置全局 knitr 选项,如下所示:

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

但是我希望设置多组此类全局选项,以便一些针对具有双数字并排图块的图块,而另一些则针对结果输出。

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

2个回答

3
我建议使用 选项勾子 来完成此任务。每当设置某个代码块选项(即不是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")
```

0

在设置中,您可以使用 opts_template,然后使用块标题中的 opts.label 标签,基于选项“配置文件”指定一组选项。

```{r, setup, include=FALSE}
knitr::opts_template$set(
    plot_config_1 = list(
        comment = NA,
        fig.width = 7,
        out.width = 50%,
        warning = FALSE,
        echo = FALSE
    ),
    plot_config_2 = list(
        comment = NA,
        fig.width = 10,
        fig.height = 10,
        fig.align = 'center',
        message = TRUE
    ),
    results_config = list(
        echo = TRUE,
        message = FALSE
    )
)

library(tidyverse)
```

``` {r, opts.label = 'plot_config_1'}
ggplot(...) + 
    geom_point()
```

``` {r, opts.label = 'plot_config_2'}
ggplot(...) + 
    geom_point()
```

``` {r, opts.label = 'results_config'}
my_lm <- lm(y~x, data = my_data)

summary(my_lm) %>% print()
```

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接