首页 > 解决方案 > Rmarkdown:参数众多,简化声明

问题描述

我正在使用闪亮将大量参数传递给 rmarkdown 文档。这是成功的,但是随着更多参数的添加,我的参数声明部分变得越来越长。

有没有办法简化参数的声明?

例如,我将参数 AZ 传递给 rmarkdown 文档,现在我将在 rmarkdown 中编写参数为:

 ---
    title: "TEST"
    params:
      A: NA
      B: NA
      C: NA
      And so on until Z
    output: word_document
    ---

这适用于少量参数,但我将传递 400 个参数,并且感觉应该有一种更简单的方法来处理大量参数,而无需逐行编写。

所需的输出,例如:

---
    title: "TEST"
    params:
      lapply(LETTERS[1:26], function(x){paste(x,": NA")})
    output: word_document
    ---

当我在堆栈上搜索或只是一般的网络搜索时,所有参数示例似乎都是一一完成的:https ://rmarkdown.rstudio.com/lesson-6.html

谢谢!

标签: rshinyr-markdown

解决方案


您可以通过命名列表或向量传递它们,而不是将单个参数传递给 Rmd。尝试这个:

示例 Rmd

---
title: "test"
output: html_document
params:
  params_list: !r NULL
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

## R Markdown

```{r}
print(params$params_list)
```

```{r}
print(params$params_list$A)
```

使成为

rmarkdown::render("test.Rmd", params = list(params_list = setNames(lapply(LETTERS[1:4], function(x){paste(x,": NA")}), LETTERS[1:4])))

推荐阅读