R 如何使用sf::st_相交从相邻多边形列表中过滤出每个多边形

R 如何使用sf::st_相交从相邻多边形列表中过滤出每个多边形,r,polygon,sf,R,Polygon,Sf,我需要为sf数据集中的每个多边形提取相邻多边形 下面是一个简单的例子: library(tidyverse) library(sf) demo(nc, ask = FALSE, verbose = FALSE) nc <- nc %>% mutate(polygon_id = row_number()) 问题是每个多边形(这里,5)都包含在邻居列表中。只使用一个nc数据集可以得到相同的结果 neighbors <- st_intersects(nc) neighbor

我需要为
sf
数据集中的每个多边形提取相邻多边形

下面是一个简单的例子:

library(tidyverse)
library(sf)

demo(nc, ask = FALSE, verbose = FALSE)
nc <- nc %>% 
  mutate(polygon_id = row_number())
问题是每个多边形(这里,5)都包含在邻居列表中。只使用一个
nc
数据集可以得到相同的结果

neighbors <- st_intersects(nc)
neighbors[[5]]
[1]  5  6  9 16 28


邻居问得好。这个问题可能有很多解决方案。但这个问题的简单答案是:
“关于如何从相邻/相邻多边形列表中过滤出实际多边形的任何提示?”
,它是使用带有R内核的Jupyter Lab IDE完成的。下面的代码提供了一种回答问题的方法

nc数据集中有100个县。此代码以颜色显示选定的县,并显示所有相邻县。此代码适用于北卡罗来纳州100个县中的任何一个县。这里选择了100个县

代码:

nc1%突变(c_id=1:nrow(nc))
n=100

grp我设法用
st_touch
而不是
st_intersects
neighbors <- st_intersects(nc)
neighbors[[5]]
[1]  5  6  9 16 28

nc1 <- nc %>% mutate(c_id = 1:nrow(nc))        
n = 100                  
grp <- st_intersects(nc1, nc1[n,1]   , sparse = F ) 

neighborhood <- nc1[grp,]
neighborhood 

plot(neighborhood$geom)
plot(nc1[n,1], col = 'blue', add = TRUE)   #