尝试将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)。如果

我需要将我的环境中的项目以R形式保存到磁盘。我不明白为什么以下代码不起作用:

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"