我在全球环境中拥有数十个数据框。我想合并所有这些而不输入所有这些名称。
我该怎么做?
答案 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()
步骤,这通常是笨重/脆弱的(什么如果你想从函数中传回对象?如果你只想合并工作区中的一些对象怎么办?...)