我想用saveRDS()
. 无论是全局的还是自定义的,我都希望saveRDS()
有同样的行为。然而,全球环境似乎是一个特例。
ls()
## [1] "dl" "gwd" "ld" "td" # Helpers defined in my .Rprofile
x <- 1
ls()
## [1] "dl" "gwd" "ld" "td" "x"
saveRDS(globalenv(), "global.rds")
现在,当我开始一个新的 R 会话并尝试加载环境时,x
它被删除了。使用创建的自定义环境不会发生这种情况new.env(parent = globalenv())
。
ls(readRDS("global.rds"))
## [1] "dl" "gwd" "ld" "td"
我预计这种行为是由于 R 中的环境实际上只是指针的集合。不过,我正在寻找一种globalenv()
使用saveRDS()
. 我目前正在save.image()
为我的应用程序使用,但这是一个笨重的特殊情况,增加了对我的测试工作流程的要求。
编辑
如果有人能详细说明为什么globalenv()
没有真正得救,我将不胜感激。我认为这是因为指针,但这并不能解释为什么这种事情确实适用于使用new.env(parent = globalenv())
.