我试图将一堆*.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)
然后是"工作",但'文件'中的文件被归为全球环境,这不是我想要的.
我想最终得到一个列表,在每个元素中包含数据帧.这样,当我进行数据处理时,我可以对列表进行讨论.
你可以试试
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.
现在测试,确实有效!
e1 = new.env()
invisible(lapply(files, load, envir = e1))
my_list = as.list(e1)
Run Code Online (Sandbox Code Playgroud)