将数据框加载到列表中

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)

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

【讨论】:

以上是关于将数据框加载到列表中的主要内容,如果未能解决你的问题,请参考以下文章

PySpark Dataframe:将一个单词附加到列的每个值

ExtJS 将事件处理程序动态添加到列编辑器

双向将字符串的“虚拟”列表绑定到列

将多个值添加到列中 - Pandas

如何将数据框值“透视”到列中

将数据框加载到列表中