R - rbind 错误:"names do not match previous names"



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

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

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

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

第一个数据帧的名称(列名称)与第二个数据帧的名称不匹配。正如错误消息所说。

> 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

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

很容易使用unname()函数:

data.frame <- unname(data.frame)

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

名称与以前的名称不匹配

按如下方式使用代码:

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

相关内容

最新更新