R - 未加载在功能中保存图像

时间:2018-02-27 16:26:55

标签: r function savestate

以下代码可以使用现有的SoStuck对象加载:

Im <- c(1,2,3,4)
Stuck <- c(6,7,8,9)
SoStuck <- data.frame(Im, Stuck)
save.image("image.RData")

然后我退出本次会议并开始另一次会议。我这样做:

load("image.RData")

有效:

SoStuck
   Im  Stuck
1  1     6
2  2     7
3  3     8
4  4     9

但是,如果我这样做:

myfunction <- function()
{
  Im <- c(1,2,3,4)
  Stuck <- c(6,7,8,9)
  SoStuck <- data.frame(Im, Stuck)
  save.image("image.RData")
}
myfunction()

重新启动R,加载然后调用找不到对象:

load("image.RData")
SoStuck
Error: object 'SoStuck' not found

我也在该循环中尝试return(save.image("image.RData"))并得到相同的错误。

如果文件保存在函数中,任何人都知道我需要更改加载文件吗?感谢。

1 个答案:

答案 0 :(得分:2)

根据save.image的文档,&#34; save.image()只是“保存我当前工作空间”的捷径,即save(list = ls(all.names = TRUE) ),file =&#34; .RData&#34;,envir = .GlobalEnv)。&#34;

因此,要使您的功能正常工作,您可以像这样修改代码:

myfunction <- function()
{
  Im <- c(1,2,3,4)
  Stuck <- c(6,7,8,9)
  SoStuck <- data.frame(Im, Stuck)
  save(list = ls(all.names = TRUE), file = "image.RData", envir = 
  environment())
}
myfunction()

load("image.RData")