2014-04-01 60 views
1

我想將全局工作區圖像保存在R函數中,但正在運行到一個範圍界定問題。這裏有一個如何這可能工作的例子:如何將工作區圖像保存到R函數中的指定位置

rm(list=ls()) 

SaveData <- function(fname) { 
    # I have to use save instead of save.image due to separate constraints 
    save(list=ls(), file=fname, envir=.GlobalEnv) 
} 

# Test 
x <- 1 
SaveData("~/SaveDataTest.RData") 

rm(list=ls()) 
load("~/SaveDataTest.RData") 
ls() # Would look for this to include x 

SaveData("~/SaveDataTest.RData")線雖然引發以下錯誤:

Error in save(list = ls(), file = fname, envir = .GlobalEnv) : 
object ‘fname’ not found 

這表明,我認爲通過envir=.GlobalEnvsave功能的全功能的環境切換到。 GlobalEnv。我怎麼能解決這個問題?

+0

爲什麼你指定'envir'? 'ls()'似乎是多餘的。至少它適用於我,如果我刪除'envir'。這與save.image()有什麼不同? –

+1

刪除'envir'只會保存該函數的工作區。關於'save.image()',我正在處理單獨的技術限制(在這裏描述的過於單調),這限制了我'保存'。 –

+0

具體來說,你會看到如果你刪除'envir',最後的'ls()'調用將不會顯示'x'。 –

回答

1

更換list=ls() + envir=.GlobalEnvlist=ls(.GlobalEnv)作品:

SaveData <- function(fname) { 
    save(list=ls(.GlobalEnv), file=fname) 
} 
相關問題