2015-11-02 124 views
1

我使用RMarkdown並希望在編織文檔之前獲取多個.R文件。我將我的.R文件分割爲「read.R」和「calc.R」,但是rmarkdown返回此方法的錯誤。但是,如果我將read.R和calc.R合併成一個文件(「combined.R」),它將毫無問題地運行。在rmarkdown中讀取多個文件

這是我想要做的。 在一個.R文件中讀取此數據。

# Read.R 
game <- c(1,2,3,4,5) 
royals <- c(5,7,3,5,7) 
mets <- c(4,1,9,3,2) 
data <- data.frame(game,royals,mets) 

然後在另一個.R文件中計算。

# Calc.R 
data$winner <- ifelse(data$royals>data$mets,"royals","mets") 

然後運行rmarkdown。這不起作用(採購單獨的文件)...

--- 
title: "rmd_test" 
author: "me" 
date: "Monday, November 02, 2015" 
output: word_document 
--- 
```{r} 
source("read.R") 
source("calc.R") 
print(data) 
``` 

但採購單合併文件一樣......

# Combined.R 
# Read data 
game <- c(1,2,3,4,5) 
royals <- c(5,7,3,5,7) 
mets <- c(4,1,9,3,2) 
data <- data.frame(game,royals,mets) 
# Calc 
data$winner <- ifelse(data$royals>data$mets,"royals","mets") 

這是同樣的rmarkdown文件採購單combined.R文件。

--- 
title: "rmd_test" 
author: "me" 
date: "Monday, November 02, 2015" 
output: word_document 
--- 
```{r} 
source("combined.R") 
print(data) 
``` 

我想,因爲我的「read.R」文件是很普通的,穩定的分裂文件,但「calc.R」的變化和是可變的。所以將兩者分開更爲方便。

+0

您源'data.R',但你Rscipt的名字是'read.R' 。這是問題嗎? – jmjr

+0

謝謝指出!這不是我的其他文件的問題,但我通過更改rmd文件,以便在每個塊中獲取所有文件並解決問題。認爲這是明顯的。謝謝! – mscriabin

回答

0

如果你想在不同的腳本甚至項目之間共享代碼。你應該考慮把它放在一個單獨的包裏。雖然這在開始時確實更加努力,但這可能會在您的項目不斷增多或您想與其他人分享您的代碼時得到回報。 如果你是一個「R-包」新手(像我一樣),有一個非常好的書哈德利韋翰可在線:http://r-pkgs.had.co.nz/