同时合并列表中的多个data.frames
我有一个我要合并的许多data.frames的列表。这里的问题是每个data.frame在行数和列数方面都不同,但它们都共享关键变量(我已经调用过"var1"
,"var2"
在下面的代码中)。如果data.frames在列方面是相同的,我只能rbind
,plyr的rbind.fill可以完成这项工作,但这些数据并非如此。
因为该merge
命令仅适用于2个data.frames,所以我转向Internet寻求创意。我从这里得到了这个,它在R 2.7.2中完美运行,这是我当时所拥有的:
merge.rec <- function(.list, ...){ if(length(.list)==1) return(.list[[1]]) Recall(c(list(merge(.list[[1]], .list[[2]], ...)), .list[-(1:2)]), ...)}
我会像这样调用函数:
df <- merge.rec(my.list, by.x = c("var1", "var2"), by.y = c("var1", "var2"), all = T, suffixes=c("", ""))
但是在2.7.2之后的任何R版本中,包括2.11和2.12,此代码失败并出现以下错误:
Error in match.names(clabs, names(xi)) : names do not match previous names
(很明显,我在其他地方看到了其他对此错误的引用而没有解决方案)。
有什么方法可以解决这个问题吗?
SMILET
ibeautiful
蛊毒传说