按槽从空间多边形对象子集多边形

Subsetting Polygons from Spatial Polygons object by slot

我有 'SpatialPolygons' 个对象,我想对 @hole == FALSE 的多边形进行子集化并创建一个新对象。

str(my_object) returns 这个:

使用下面的代码可预测地一次获得 1 个多边形(或 none 如果 @hole == TRUE),但我无法从我的对象中提取多个多边形的子集。

newSP <- aDis[aDis@polygons[[1]]@Polygons[[1]]@hole == FALSE]

我认为我的问题在于我不知道如何引用第二个列表 "in general",即从列表(多边形)中获取项目,其中 @hole == FALSE。将第二个 [[]] 留空不起作用。

P.S。抱歉,没有可重现的例子;我不确定如何以简单的方式重现此问题。

最简单的方法是 sapply:

hasHole <- sapply(
  aDis@polygons[[1]]@Polygons,
  slot,
  "hole"
)
aDis@polygons[[1]]@Polygons[!hasHole]

不过,作为最终用户不得不求助于这种事情是不寻常的。我不熟悉这个特定的包 --- 是否没有在其他地方定义的函数来帮助您访问这些插槽?