尝试将R环境中的所有内容保存到磁盘
我需要将我的环境中的项目以R形式保存到磁盘。我不明白为什么以下代码不起作用:尝试将R环境中的所有内容保存到磁盘,r,caching,save,R,Caching,Save,我需要将我的环境中的项目以R形式保存到磁盘。我不明白为什么以下代码不起作用: op <- function(){ for(i in 1:length(ls())){ file <- paste0(ls()[i],".Rds") saveRDS(file,file) } } op这里实际上有两件事不对: 我怀疑您想保存.GlobalEnv,而不仅仅是op的环境。但是,对ls的调用将列出op环境中的对象(在调用ls时,该环境仅为i)。如果
op <- function(){
for(i in 1:length(ls())){
file <- paste0(ls()[i],".Rds")
saveRDS(file,file)
}
}
op这里实际上有两件事不对:
我怀疑您想保存.GlobalEnv
,而不仅仅是op
的环境。但是,对ls
的调用将列出op
环境中的对象(在调用ls
时,该环境仅为i
)。如果要在.GlobalEnv
中列出对象,请调用ls(.GlobalEnv)
另外,当您调用saveRDS
时,您告诉它将存储在文件中的字符串保存到存储在文件中的路径中。因此,您实际上只是在保存路径。相反,您需要从.GlobalEnv
因此,正确的方法之一是:
op <- function(){
obj_names <- ls(.GlobalEnv)
for(i in 1:length(obj_names){
file <- paste0(obj_names[i],".Rds")
saveRDS(get(obj_names[i], envir = .GlobalEnv), file)
}
}
op您编写的代码只保存名称与函数环境中名称相同的文件列表(即单个文件“i.rds”)
如果要将环境的内容保存到文件中,您可能需要尝试使用save()
或save.image()
函数,该函数完全满足您的要求
有关信息,请尝试保存。下面是一些代码:
a <- 1
b <- 2
save(list=ls(), file="myfile.rda")
rm(list=ls())
load(file="myfile.rda")
ls()
文件
是一个字符串(包括粘贴在其末尾的“.Rds”
),因此您告诉saveRDS
保存存储在文件
中的字符串(不是该名称的对象减去.Rds部分)。如果有一个真实的答案会很好,因为评论是短暂的……我邀请任何人对我的评论进行扩展,并将其转化为完整的答案。我不打算删除我的评论,我怀疑版主也会这样做,所以我不认为这是短暂的。(这也不是一个很好的答案,这就是为什么我留下了一个快速、有用的评论,而不是一个简短、蹩脚的答案。)
a <- 1
b <- 2
save(list=ls(), file="myfile.rda")
rm(list=ls())
load(file="myfile.rda")
ls()
[1] "a" "b"