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

R - Rename ID names of a spatial object

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

这是一个示例(它是一个 SpatialPolygonDataFrame,但在我的 'real' 案例中它是一个 SpatialPolygon,因此在多边形和数据框之间没有必要的 link):

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名称。

如果性能不是问题,您可以在 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]
}

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

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