【发布时间】:2014-05-12 16:31:48
【问题描述】:
我想将全局工作区图像保存在 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=.GlobalEnv 传递给save 函数会将整个函数的环境切换到.GlobalEnv。我该如何解决这个问题?
【问题讨论】:
-
为什么指定
envir?鉴于ls(),这似乎是多余的。如果我删除envir,至少它对我有用。这与save.image()有何不同? -
删除
envir只会保存函数的工作区。关于save.image(),我正在处理单独的技术限制(这里无法描述),这将我限制在save。 -
具体来说,你会看到如果你删除
envir,最后的ls()调用将不会显示x。 -
好的,谢谢。我现在知道了。我专注于“未包装”的解决方案。