合并大量的data.frames

可能重复:
同时合并列表中的多个dataframe

示例data.frames

  df1 = data.frame(id=c('1','73','2','10','43'),v1=c(1,2,3,4,5)) <br> df2 = data.frame(id=c('7','23','57','2','62','96'),v2=c(1,2,3,4,5,6)) <br> df3 = data.frame(id=c('23','62'),v3=c(1,2)) <br> 

注意:每个data.frame的id是唯一的。 我想要得到的matrix看起来像

 1 1 NA NA 2 3 4 NA 7 NA 1 NA 10 4 NA NA 23 NA 2 1 43 5 NA NA 57 NA 3 NA 62 NA 5 2 73 2 NA NA 96 NA 6 NA 

在这种情况下,我只显示3个数据集,实际上我至less有22个数据集,所以最后我想要一个nx(22 + 1)的matrix,其中n是所有22个数据集的id数。

给定2个数据集,我需要在第一列中获取它们的ids ,第二列和第三列填充值,如果没有值,则inputNA

把它们放到一个list并使用Reduce merge

 Reduce(function(x, y) merge(x, y, all=TRUE), list(df1, df2, df3)) # id v1 v2 v3 # 1 1 1 NA NA # 2 10 4 NA NA # 3 2 3 4 NA # 4 43 5 NA NA # 5 73 2 NA NA # 6 23 NA 2 1 # 7 57 NA 3 NA # 8 62 NA 5 2 # 9 7 NA 1 NA # 10 96 NA 6 NA 

你也可以使用这个更简洁的版本:

 Reduce(function(...) merge(..., all=TRUE), list(df1, df2, df3))