2017-10-05 70 views
0

我正在使用rmarkdown做5個主要步驟:讀取,清理,轉換,分析和viz。嵌套Rmarkdown文件(工作流問題)

我的計劃是將每個步驟的代碼分成一個或兩個降價文件(.Rmd)。以下每個.Rmd將作爲外部文件調用到下一個.Rmd中(即,我想將每個步驟的.Rmd嵌套到下一個)。

我通過更換嵌套.Rmd文件:

knitr::opts_chunk$set(echo = TRUE) 

有:

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

這個工作,直到我的第三排料,當我在得到一個錯誤knitr ::針織 line:

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頁面。

回答

0

要組合多個子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} 
```