R - 重命名空间对象的ID名称

时间:2017-11-13 13:00:47

标签: r polygon spatial

我的目标是更改SpatialPolygon对象的ID名称。我知道如何访问ID名称,但我不得不重命名。

这是一个例子(它是一个SpatialPolygonDataFrame但在我的'真实'情况下它是一个SpatialPolygon,所以没有多边形和数据框之间的必要链接):

library(rgdal)
library(rgeos)
library(sp)
library(maptools)

data(wrld_simpl)
mymap.sp <- wrld_simpl[which(wrld_simpl$ISO3 == "ATG" |
                             wrld_simpl$ISO3 == "BRA" |
                             wrld_simpl$ISO3 == "FRA" |
                             wrld_simpl$ISO3 == "CIV"), ]

# access to the ID names
sapply(slot(mymap.sp, "polygons"), function(x) slot(x, "ID"))
[1] "ATG" "BRA" "FRA" "CIV"

假设我想用“1”,“2”,“3”,“4”替换这些ID名称。

2 个答案:

答案 0 :(得分:2)

如果性能不是问题,可以在for循环中执行此操作:

new_IDs = paste0("ID", 1:4)
for (i in 1:length(slot(mymap.sp, "polygons"))){
  slot(slot(mymap.sp, "polygons")[[i]], "ID") = new_IDs[i]
}

答案 1 :(得分:1)

我建议使用 sp::spChFIDs 函数而不是滚动您自己的循环。具体来说,您可以像这样更改您的 ID:

mymap.sp <- sp::spChFIDs(mymap.sp, as.character(1:4))