作为更大问题的一部分(在多边形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
检查是有原因的,我很好奇它是什么。
答案 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可以正常工作。
谢谢