Вложение файлов Rmarkdown (проблемы рабочего процесса)

Я использую rmarkdown для выполнения 5 основных шагов: чтение, очистка, преобразования, анализ и т.д.

Мой план состоит в том, чтобы разделить код для каждого шага на один или два файла уценки (.Rmd). Каждый следующий .Rmd будет вызываться как внешний файл в следующем .Rmd (т.е. я хочу вложить свой .Rmd каждого шага в следующий).

Я вставляю файлы .Rmd, заменяя:

knitr::opts_chunk$set(echo = TRUE)

с:

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

Это работало до моего третьего вложения, когда я получаю сообщение об ошибке в строке knitr::knit:

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

ПРИМЕЧАНИЕ: каждый раз, когда я ссылался на что-либо, это делалось с абсолютными путями, так что это не должно быть проблемой.

Может ли кто-нибудь указать мне правильный способ вложения .Rmd друг в друга?

Наконец, если этот рабочий процесс кажется диким, буду рад любым другим предложениям по архитектуре! Мои причины вложения (в отличие от того, чтобы помещать все в большой блокнот R):

  1. Я хочу работать на "страницах" .Rmd, чтобы иметь отдельные вкладки с меньшим количеством кода, который мне нужно прокручивать (и, возможно, случайно запутаться).
  2. Я могу передавать данные с одного шага на другой, не теряя времени на запись их куда-нибудь на диск. (В основном я хочу иметь возможность оценить и использовать результаты предыдущего .Rmd)
  3. Я могу сделать чистую страницу в формате html или pdf для каждого шага процесса.

person BonnieB    schedule 05.10.2017    source источник


Ответы (1)


Чтобы объединить несколько дочерних файлов 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}
```
person Sébastien Rochette    schedule 08.10.2017