我正在尝试将一堆* .Rdata加载到列表中。
files <- paste0("name", 1:10, ".Rdata")
data <- lapply(files, load)
这会创建一个列表,其中每个元素都有数据框的名称,但没有其他内容。
如果我重新定义文件,使其只包含第一个文件,并调用:
load(files)
然后&#34;工作&#34;,但&#39;文件中的文件&#39;符合全球环境,这不是我想要的。
我想最终得到一个列表,每个元素都包含数据帧。这样,当我进行数据处理时,我可以对列表进行讨论。
答案 0 :(得分:9)
你可以尝试
lapply(files, function(x) mget(load(x)))
mget
将返回列表中对象(或多个对象)的值。在.Rdata
文件中,每个文件只有一个“data.frame”对象。所以,即使get
也应该有用。
在您的代码中,
load(files[1])
可以在全局环境中找到对象。假设,对象是'd1',通过在控制台上键入'd1',您将获得对象的值。同样的方式
lapply(files, load, .GlobalEnv)
在全局环境中加载对象,可以通过键入来访问。您的问题,我想是在列表中获取值,可以使用get
或mget
来完成。
答案 1 :(得分:6)
现在经过测试,确实有用!
e1 = new.env()
invisible(lapply(files, load, envir = e1))
my_list = as.list(e1)