我希望通过属性对 SpatialPolygonsDataFrame 进行子集化,但我希望允许它返回一个空的 SpatialPolygonsDataFrame。

如果我们将 SpatialPolygonsDataFrame 类型的对象像 data.frames 一样处理,如讨论 here ,我们应该能够获取和处理空对象。

我很感兴趣,因为我想将它合并到一个函数中,该函数可能会尝试通过本质上不选择任何特征的属性进行子集化。

owd <- getwd()  
setwd(system.file("shapes", package = "maptools"))  
library(maptools)  
nc90 <- readShapeSpatial("co37_d90")  
setwd(owd) 
 
nc90@data[nc90@data$AREA>0.15,]               # returns data.frame 
bigctys <- nc90[nc90@data$AREA>0.15,]         # SpatialPolygonsDataFrame  
nc90@data[nc90@data$AREA>0.25,]               # returns empty data.frame 
bigestctys <- nc90[nc90@data$AREA>0.25,]      # ERROR 

有没有办法使这项工作?如果没有,有没有办法初始化一个空的 SpatialPolygonsDataFrame 对象?我想在这样一个对象上执行的 future 操作涉及在现有 map 上过度绘制,所以我希望无论如何都能生成图像,即使是空白的。

请您参考如下方法:

现在你不能。这有点不一致,至于 SpatialPointsDataFrame您可以:

library(sp) 
demo(meuse, ask = FALSE) 
x = meuse[F,] 

虽然有警告;还有, validObject(x)返回 FALSE ,所以它们是不允许的!

这些对象应该代表什么有点抽象,但我可以看到与 data.frame 的类比。零行的对象:它们可以存在是有用的。


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!