首页 文章

将数据帧加载到列表中

提问于
浏览
6

我试图将一堆* .Rdata加载到列表中 .

files <- paste0("name", 1:10, ".Rdata")
data <- lapply(files, load)

这会创建一个列表,其中每个元素都有数据框的名称,但没有其他内容 .

如果我重新定义文件,使其只包含第一个文件,并调用:

load(files)

然后是“工作”,但'文件'中的文件被归为全球环境,这不是我想要的 .

我想最终得到一个列表,在每个元素中包含数据帧 . 这样,当我进行数据处理时,我可以对列表进行讨论 .

2 回答

  • 8

    你可以试试

    lapply(files, function(x) mget(load(x)))
    

    mget 将返回列表中对象(或多个对象)的值 . 在 .Rdata 文件中,每个文件只有一个'data.frame'对象 . 所以,即使 get 应该工作 .

    在你的代码中,

    load(files[1])
    

    对象将在全局环境中找到 . 假设,对象是'd1',通过在控制台上键入'd1',您将获得对象的值 . 一样的方法

    lapply(files, load, .GlobalEnv)
    

    在全局环境中加载对象,可以通过键入来访问 . 您的问题,我想是将值放在列表中,可以使用 getmget 来完成 .

  • 6

    现在测试,确实有效!

    e1 = new.env()
    invisible(lapply(files, load, envir = e1))
    my_list = as.list(e1)
    

相关问题