运行 来自另一个 .rmd 的 RMarkdown (.rmd) 而没有创建 HTML 输出

Run RMarkdown (.rmd) from inside another .rmd without creating HTML output

我正在使我的代码更加模块化,并希望从一个整体 RMarkdown 中 运行 多个 RMarkdown 文件。我相信如果我将所有 RMarkdown 文件翻译成 .R 脚本并使用 source(),我可以做到这一点,但我喜欢 RMarkdown 的 document-like 性质,我可以描述我正在做的事情以纯文本形式进行。

目标是整理数据并导出可用的 .sav 文件。我想从 run.rmd 运行 clean.rmd,但我不想要任何 HTML/pdf/etc。输出。删除 YAML header 中的输出行不会阻止输出。如果有一种方法可以在不将所有内容都翻译成 .R 脚本的情况下做到这一点,我将非常感激。谢谢。

clean.rmd: 执行清理的脚本

---
title: "clean"
author: "jrcalabrese"
date: "12/30/2021"
output: html_document
---

```{r}
library(tidyverse)
library(haven)
```

```{r}
data(cars)
cars <- cars %>%
  mutate(newvar = speed + dist)
```

```{r}
write_spss(cars, "~/Documents/cars_new.sav", compress = FALSE)
```

run.rmd:运行s clean.rmd

的脚本
---
title: "run"
author: "jrcalabrese"
date: "12/30/2021"
output: html_document
---

```{r}
rmarkdown::render("~/Documents/clean.rmd")
```

感谢您的帮助!此功能有效:

---
title: "run"
author: "jrcalabrese"
date: "12/30/2021"
#output: html_document
---

```{r}
source_rmd = function(file, ...) {
  tmp_file = tempfile(fileext=".R")
  on.exit(unlink(tmp_file), add = TRUE)
  knitr::purl(file, output=tmp_file)
  source(file = tmp_file, ...)
}
```

```{r}
source_rmd("~/Documents/clean.rmd")
```