将数据框加载到列表中
Posted
技术标签:
【中文标题】将数据框加载到列表中【英文标题】:Load data frames into list 【发布时间】:2015-06-06 13:30:21 【问题描述】:我正在尝试将一堆 *.Rdata 加载到列表中。
files <- paste0("name", 1:10, ".Rdata")
data <- lapply(files, load)
这将创建一个列表,其中每个元素都有数据框的名称,但没有其他内容。
如果我重新定义文件使其只包含第一个文件,然后调用:
load(files)
然后是“作品”,但“文件”中的文件被分配给全局环境,这不是我想要的。
我想最终得到一个列表,每个元素中都包含数据框。这样,当我进行数据处理时,我就可以在列表中使用。
【问题讨论】:
这可能对***.com/questions/3764292/loading-many-files-at-oncelapply(files, load, .GlobalEnv)
有帮助
是的,我想。但这会在全球环境中创建一堆文件,不是吗?
对不起,我评论的时候只看了第一部分
每个.Rdata是否有多个对象(data.frames)
试试lapply(files, function(x) mget(load(x)))
【参考方案1】:
现已测试,确实有效!
e1 = new.env()
invisible(lapply(files, load, envir = e1))
my_list = as.list(e1)
【讨论】:
@user3551644 哎呀,它当然不起作用,因为lapply
不返回环境,所以它不能嵌套。现已修复。【参考方案2】:
你可以试试
lapply(files, function(x) mget(load(x)))
mget
将返回列表中对象(或多个对象)的值。在您的.Rdata
文件中,每个文件只有一个“data.frame”对象。所以,即使get
也应该可以工作。
在您的代码中,
load(files[1])
对象将在全局环境中找到。假设对象是 'd1',通过在控制台上输入 'd1',您可以得到对象的值。同样的方法
lapply(files, load, .GlobalEnv)
在全局环境中加载对象,并且可以通过键入来访问。您的问题,我猜想是获取列表中的值,这可以使用get
或mget
来完成。
【讨论】:
以上是关于将数据框加载到列表中的主要内容,如果未能解决你的问题,请参考以下文章