Para cada polígono de un sf
objeto, necesito extraer los datos de una sola variable de todos los polígonos vecinos. He hecho un reprex abajo.
Hasta ahora he conseguido obtener una lista de los polígonos vecinos utilizando st_intersects
,
demo(nc, ask = FALSE, verbose = FALSE)
nc <- nc %>%
mutate(polygon_id = row_number())
neighbors <- st_intersects(nc, nc)
Por ejemplo, el polígono 5 (condado de Northampton) tiene los siguientes vecinos:
neighbors[[5]]
[1] 5 6 9 16 28
Necesito el nombre de cada uno de estos vecinos (y hacer esto para cada polígono)
names(nc)
[1] "AREA" "PERIMETER" "CNTY_" "CNTY_ID" "NAME" "FIPS" "FIPSNO" "CRESS_ID" "BIR74" "SID74" "NWBIR74" "BIR79"
[13] "SID79" "NWBIR79" "geom" "polygon_id"
nc[c(6,9,16,28),5]
NAME geom
6 Hertford MULTIPOLYGON (((-76.74506 3...
9 Warren MULTIPOLYGON (((-78.30876 3...
16 Halifax MULTIPOLYGON (((-77.33221 3...
28 Bertie MULTIPOLYGON (((-76.78307 3...
Estoy luchando por hacer dos cosas:
- Eliminar "la diagonal", es decir, el propio polígono (aquí, el polígono 5) de su lista de vecinos
- Extraer los nombres de todos sus vecinos (condados de Hertford, Warren, Halifax y Bertie) en N vectores de caracteres, ya que el número de vecinos varía. Como alternativa, puedo conformarme con pegarlos en un único vector de caracteres separados por algo que me permita dividirlos después.