【问题标题】:Rmarkdown: Numerous parameters, simplify declarationRmarkdown:参数众多,简化声明
【发布时间】:2020-08-07 22:05:43
【问题描述】:

我正在使用 shiny 将大量参数传递给 rmarkdown 文档。这是成功的,但是随着参数的增加,我的参数声明部分越来越长。

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

例如,我将参数 A-Z 传递给 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

谢谢!

【问题讨论】:

  • 您可以编写代码来生成标题所需的文本。但是您仍然必须在某处列出所有值。否则我真的不确定你在追求什么。如果您将拥有一堆参数,您将需要定义它们以便以某种方式使用它们。使用适当的reproducible example 提供具体建议会更容易
  • 如果我的例子不清楚,我很抱歉。我添加了所需的输出以帮助澄清。本质上,如果我们以 A:Z 为例,我们如何将 A:Z 写成单行而不是几十行?

标签: r shiny r-markdown


【解决方案1】:

您可以通过命名列表或向量传递它们,而不是将单个参数传递给 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])))

【讨论】:

  • “params: params_list: !r NULL”正是我想要的!谢谢斯特凡!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-23
  • 1970-01-01
相关资源
最近更新 更多