我有一个列表,里面有很多我想合并的数据帧。这里的问题是,每个data.frame的行数和列数不同,但它们都共享关键变量(在下面的代码中我将其称为"var1"
和"var2"
)。如果data.frames在列方面是相同的,我只能rbind
,对于plyr的rbind.fill可以做这项工作,但这些数据不是这样。
由于merge
命令只适用于2 data.frames,我转向互联网寻找思路。我从在这里中得到了这个,它在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
(顺便说一句,我看到其他引用此错误在其他地方没有解决)。
有办法解决这个问题吗?