gpt4 book ai didi

r - 如何保存独立的 R 环境对象

转载 作者:行者123 更新时间:2023-12-04 09:35:17 25 4
gpt4 key购买 nike

我已经花了几个小时试图使这项工作,并觉得我错过了一些简单的东西:

my_env = new.env(hash = TRUE, parent = .GlobalEnv)
my_env[['echo']] <- function(x) {x}
my_env[['echo']](123)
[1] 123
my_env$echo(123)
[1] 123
save(my_env, file = "MyEnv.RData", envir = .GlobalEnv)
loaded_env <- load(file = "MyEnv.RData",envir = .GlobalEnv)
typeof(loaded_env)
[1] "character"

当我保存整个工作区时,函数会被保存然后重新加载(在我关闭/打开 R Studio 之后)。但在这里, save()和/或 load()不起作用,加载后我的环境中只有一个字符串。

如何将单独的环境对象保存到文件,而不是完整的工作区?然后我需要在另一个 session 中将该环境( my_env )中的所有对象加载到 .GlobalEnv 中。

最佳答案

1) 保存/加载 您的代码确实适用于 my_env已恢复;然而,load返回恢复对象的名称,而不是对象本身。对象本身作为副作用而不是通过返回值静默恢复。

save(my_env, file = "MyEnv.RData")
rm(my_env)
nms <- load("MyEnv.RData")
nms
## [1] "my_env"
my_env
## [1] <environment: 0x000000000bfa5c70>

2) saveRDS/readRDS 您可以交替使用 saveRDSreadRDS保存和恢复单个对象。在那种情况下 readRDSload 不同,返回对象本身而不是其名称.
saveRDS(my_env, file = "MyEnv.RData")
rm(my_env)
my_env <- readRDS("MyEnv.RData")
my_env
## <environment: 0x000000000bfb45f8>

3) 保存/附加 另一种可能是放置 MyEnv.RData在搜索路径上而不是在全局环境中:
save(my_env, file = "MyEnv.RData")
rm(my_env)
attach("MyEnv.RData")
my_env
## <environment: 0x000000000b072188>

注:如果你想加载 my_env 的内容进入全局环境而不是加载 my_env本身你将不得不复制内容:
for(el in ls(my_env)) assign(el, get(el, my_env))

关于r - 如何保存独立的 R 环境对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35279150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com