通过循环创建 R Markdown html

Creating R Markdown htmls by looping

我有一个很大的报告说我是 运行 通过 R Markdown。该报告有一个数据框。在脚本的开头,过滤了数据框。之后,它会做很多操作和解释。

目前,我改变了我过滤的内容并分别编制了每份报告。我想使这个过程自动化,以便我可以提供一个术语向量来过滤并生成报告。

这是一个例子:

---
title: "Create markdown htmls with loop"
author: "Nathan Roe"
date: "2/17/2022"
output: html_document
---
library(dplyr)
my_df <- data.frame(my_letters = letters[1:5], my_numbers = 1:5)
my_df %>% filter(my_letters == "a")

我想为 a、b、c、d 和 e 生成报告。目前,我必须进入并更改要过滤的内容。如上例所示,我正在过滤“a”。之后,我将不得不更改它以过滤“b”,等等。有没有办法自动执行此操作,以便我提供向量 a、b、c、d 和 e,并根据这些过滤器生成报告,并使用字母作为标题生成 html。例如,我提供 my_letters <- letters[1:5],脚本会创建 a.html、b.html、c.html、d.html 和 e.html。

似乎与此类似,https://community.rstudio.com/t/loop-for-output-files/79716,但是这个例子解释得不好,即使它确实回答了问题。

谢谢!

你说的link给出了生成一个parametrized report的所有元素。

在您的示例中,您可以 knit with custom parameters 使用 rmarkdown::render

降价文件:test.Rmd

---
title: "Create markdown htmls with loop"
author: "Nathan Roe"
date: "2/17/2022"
output: html_document
params: 
  letter: 'a'
---


# `r paste('Processing letter ',letter)`

```{r}
letter
```

html 循环生成文件 :

for (letter in letters[1:5] ) {
  rmarkdown::render(input = 'test.Rmd',
                    output_file = paste0(letter,".html"), 
                    params = list(letter = letter))
}

...