我的目标是更改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名称。
答案 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))