将数据帧加载到列表中

时间:2015-04-01 18:56:38

标签: r load lapply

我正在尝试将一堆* .Rdata加载到列表中。

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

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

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

load(files)

然后&#34;工作&#34;,但&#39;文件中的文件&#39;符合全球环境,这不是我想要的。

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

2 个答案:

答案 0 :(得分:9)

你可以尝试

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

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

在您的代码中,

load(files[1]) 

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

lapply(files, load, .GlobalEnv)

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

答案 1 :(得分:6)

现在经过测试,确实有用!

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