通过子集获取空的 SpatialPolygonsDataFrame?
get an empty SpatialPolygonsDataFrame via subset?
我希望通过属性对 SpatialPolygonsDataFrame 进行子集化,但我想允许它 return 一个空的 SpatialPolygonsDataFrame。
如果我们要像 data.frames 那样处理 SpatialPolygonsDataFrame 类型的对象,如所讨论的 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 对象?我想对此类对象执行的未来操作涉及在现有地图上过度绘制,因此我希望无论如何都能生成图像,即使图像是空白的。
现在你不能。这有点不一致,至于 SpatialPointsDataFrame
个对象你可以:
library(sp)
demo(meuse, ask = FALSE)
x = meuse[F,]
尽管有警告;另外,validObject(x)
returns FALSE
,所以它们是不允许的!
这些对象应该表示什么有点抽象,但我可以看到与 data.frame
具有零行的对象的类比:它们可以存在是有用的。
我希望通过属性对 SpatialPolygonsDataFrame 进行子集化,但我想允许它 return 一个空的 SpatialPolygonsDataFrame。
如果我们要像 data.frames 那样处理 SpatialPolygonsDataFrame 类型的对象,如所讨论的 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 对象?我想对此类对象执行的未来操作涉及在现有地图上过度绘制,因此我希望无论如何都能生成图像,即使图像是空白的。
现在你不能。这有点不一致,至于 SpatialPointsDataFrame
个对象你可以:
library(sp)
demo(meuse, ask = FALSE)
x = meuse[F,]
尽管有警告;另外,validObject(x)
returns FALSE
,所以它们是不允许的!
这些对象应该表示什么有点抽象,但我可以看到与 data.frame
具有零行的对象的类比:它们可以存在是有用的。