嵌套 Rmarkdown 文件(工作流程问题)

Nesting Rmarkdown files (Workflow Problems)

我正在使用 rmarkdown 执行 5 个主要步骤:读取、清理、转换、分析和可视化。

我的计划是将每个步骤的代码分成一个或两个markdown文件(.Rmd)。接下来的每个 .Rmd 都将作为外部文件调用到下一个 .Rmd 中(即我想将每个步骤的 .Rmd 嵌套到下一个步骤中)。

我通过替换嵌套 .Rmd 文件:

knitr::opts_chunk$set(echo = TRUE)

与:

knitr::knit("**ABSOLUTE PATH TO PREVIOUS .Rmd FILE**")

这一直有效,直到我的第 3 次嵌套,当我在 knitr::knit 行出现错误时:

Error in file(file, "rt" ) Cannot open the connection calls: <Anonymous> … withVisible ->eval ->eval -> read.csv ->read.table -> file

注意: 每次我引用的任何内容都是用绝对路径完成的,所以这不应该是问题。

谁能告诉我将 .Rmd 嵌套到彼此中的正确方法?

最后,如果这个工作流看起来很野蛮,我欢迎任何其他架构方面的建议!我嵌套的原因(而不是将所有内容都放在一个大的 R Notebook 中)是:

  1. 我想在 .Rmd 'pages' 中工作以获得单独的选项卡,我需要滚动浏览的代码更少(并且可能会不小心弄乱)。
  2. 我可以将数据从一个步骤传递到另一个步骤,而不会浪费时间将其写入磁盘的某个位置。 (基本上我希望能够评估和使用之前.Rmd的结果)
  3. 我可以为流程的每个步骤制作干净的 html 或 pdf 页面。

为了合并多个子 Rmd 文件,我使用了一个调用所有子文件的通用 Rmd 文件。这样,您也可以决定不在这个主文件中直接显示其中一些 eval=FALSE
有关 https://yihui.name/knitr/demo/child/

的更多信息

主文件看起来像任何 Rmd:

---
title: Modelling distribution of species in the Bay of Biscay
author: "StatnMap - Sébastien Rochette"
date: '`r format(Sys.time(), "%d %B, %Y")`'
output:
  html_document: default
---

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

<!-- Content -->

```{r reading, child='Reading.Rmd', eval=TRUE}
```

```{r cleaning, child='Cleaning.Rmd', eval=TRUE}
```

```{r analysis, child='Analysis.Rmd', eval=TRUE}
```