如何合并全局环境中的所有数据框?

时间:2016-04-19 17:08:23

标签: r merge

我在全球环境中拥有数十个数据框。我想合并所有这些而不输入所有这些名称。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

关注@ Osssan的评论,并假设您要在全局工作区中合并所有

获取对象的名称,然后将对象本身检索到列表中:

DF_obj <- lapply(ls(), get)

如果要合并所有常见变量(例如,如果所有变量名称除了要合并的变量名称外都是唯一的),那么只需

Reduce(merge, DF_obj)

应该有用。

不幸的是(与lapply()等不同)Reduce没有...参数用于将其他命名参数传递给函数,因此Reduce(merge, DF_obj, by=common_variable)不起作用;正如@Osssan指出你需要像

这样的东西
mergefun <- function(x, y) merge(x, y, by= "common_variable")
merged_DF <- Reduce(mergefun, DF_obj )

正如其他评论者指出的那样,如果您只是将数据框保存在列表中,那么您可以省略ls() / get()步骤,这通常是笨重/脆弱的(什么如果你想从函数中传回对象?如果你只想合并工作区中的一些对象怎么办?...)