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

Ari*_*man 56 r

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

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

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

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

42-*_*42- 72

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

> identical(names(xd.small[[1]]), names(xd.small[[2]]) )
[1] FALSE
Run Code Online (Sandbox Code Playgroud)

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

> names(xd.small[[1]]) <- names(xd.small[[2]]) 
> identical(names(xd.small[[1]]), names(xd.small[[2]]) )
[1] TRUE
Run Code Online (Sandbox Code Playgroud)

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

  • 来自`plyr`的`rbind.fill`比`smartbind`快 (4认同)
  • 也许来自`gtools`包的`smartbind`可能很有用. (3认同)

Dr *_*rer 42

很容易使用该unname()功能:

data.frame <- unname(data.frame)
Run Code Online (Sandbox Code Playgroud)

  • 我相信rbind()实际上要求列具有名称。rbind(unname(df [,1:2]),unname(df [,3:4])))导致`if(facCol [jj]){错误:需要TRUE / FALSE时缺少值”错误为了我。 (3认同)