按槽从空间多边形对象子集多边形
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]
不过,作为最终用户不得不求助于这种事情是不寻常的。我不熟悉这个特定的包 --- 是否没有在其他地方定义的函数来帮助您访问这些插槽?
我有 '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]
不过,作为最终用户不得不求助于这种事情是不寻常的。我不熟悉这个特定的包 --- 是否没有在其他地方定义的函数来帮助您访问这些插槽?