如何从r中另一个形状文件的多边形接触的多边形创建新的形状文件?

如何从r中另一个形状文件的多边形接触的多边形创建新的形状文件?,r,polygon,shapefile,intersect,R,Polygon,Shapefile,Intersect,我有两个形状文件,一个有大多边形,另一个有小多边形SpatialPolygonDataFrame,我有许多大多边形SpatialPolygonDataFrame,它们适合许多小多边形,我想创建一个新的形状文件,其中只有小多边形接触的大多边形。我不只是想要交集,我想要所有的大多边形。但为了解决这个问题,我做了一个交集,得到了一个带有交集ID的列。我以为有了这些信息,我就可以从另一个多边形中提取多边形了,但是没有用 大概是这样的: 库(光栅) intsct\u能否创建一个独立的、最小的、可复制的示

我有两个形状文件,一个有大多边形,另一个有小多边形
SpatialPolygonDataFrame
,我有许多大多边形
SpatialPolygonDataFrame
,它们适合许多小多边形,我想创建一个新的形状文件,其中只有小多边形接触的大多边形。我不只是想要交集,我想要所有的大多边形。但为了解决这个问题,我做了一个交集,得到了一个带有交集ID的列。我以为有了这些信息,我就可以从另一个多边形中提取多边形了,但是没有用

大概是这样的:

库(光栅)

intsct\u能否创建一个独立的、最小的、可复制的示例?
library (raster)
intsct_shp<-raster::intersect(shp1, shp2)

intsct_shp$ID.1 #ID.1 because both had the same column name "ID"

[1] 9  17 17 38 38 38 39 39 50 53 54 71 84 89 89 89 89 89
101 Levels: 0 1 10 100 11 12 13 14 15 16 17 18 19 2 20 21 22 23 24 25 ... 99

 # my original data has many more polygons
 ids<- as.vector(unique(intsct_shp$ID.1)) 
 ids
 [1] "50" "38" "53" "89" "17" "9"  "39" "84" "54" "71"    
 
 new_shp<-shp1[shp1@data$ID == ids ,] 
 
 
 Warning messages:
    1: In `==.default`(shp1@data$ID, ids) :
    longer object length is not a multiple of shorter object length
     2: In is.na(e1) | is.na(e2) :
     longer object length is not a multiple of shorter object length
     

     plot(new_shp)