rbind错误:“名称与以前的名称不匹配”

时间:2012-08-18 14:41:46

标签: r

作为更大问题的一部分(在多边形ID相同的情况下向,makeUniqueIDs添加rbind.SpatialPolygonsDataFrame参数),我遇到了来自rbind的这个奇怪的消息:

> do.call("rbind",xd.small)
Error in match.names(clabs, names(xi)) : 
  names do not match previous names

我能找到的唯一其他信息是this question,这让我相信rbind也是问题的根源。

我当然可以编写自己的类似rbind的函数,但可能这个match.names检查是有原因的,我很好奇它是什么。

5 个答案:

答案 0 :(得分:67)

第一个数据框的名称与第二个数据框的名称不匹配。正如错误消息所示。

> identical(names(xd.small[[1]]), names(xd.small[[2]]) )
[1] FALSE

如果你不关心第二个df的第3或第4列的名字,你可以强迫它们是相同的:

> names(xd.small[[1]]) <- names(xd.small[[2]]) 
> identical(names(xd.small[[1]]), names(xd.small[[2]]) )
[1] TRUE

然后事情应该愉快地进行。

答案 1 :(得分:40)

很容易使用unname()函数:

data.frame <- unname(data.frame)

答案 2 :(得分:3)

rbind()需要两个对象名称相同。例如,第一个对象名称为ID Age,下一个对象名称为ID Gender,如果要使用rbind(),则会打印出来:

  

名称与以前的名称不匹配

答案 3 :(得分:2)

使用代码如下:

mylist <- lapply(pressure, function(i)read.xlsx(i,colNames = FALSE))#
mydata <- do.call('rbind',mylist)#

答案 4 :(得分:0)

检查两个组合文件中的所有变量名称。要合并的两个文件的变量名称应完全相同,否则会产生上述错误。我也面临着同样的问题,在使两个文件中的所有名称相同后,rbind可以正常工作。

谢谢