将数据帧加载到列表中

Rep*_*mat 6 load r lapply

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

files <- paste0("name", 1:10, ".Rdata")
data <- lapply(files, load)
Run Code Online (Sandbox Code Playgroud)

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

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

load(files)
Run Code Online (Sandbox Code Playgroud)

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

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

akr*_*run 9

你可以试试

lapply(files, function(x) mget(load(x)))
Run Code Online (Sandbox Code Playgroud)

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

在你的代码中,

load(files[1]) 
Run Code Online (Sandbox Code Playgroud)

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

lapply(files, load, .GlobalEnv)
Run Code Online (Sandbox Code Playgroud)

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


Gre*_*gor 6

现在测试,确实有效!

e1 = new.env()
invisible(lapply(files, load, envir = e1))
my_list = as.list(e1)
Run Code Online (Sandbox Code Playgroud)