Municípios limítrofes de UFs diferentes

Olá. Estou tentando criar uma lista com municípios limítrofes de Unidades da Federação Diferentes. Por exemplo, todos os municípios do Ceará que fazem fronteira com municípios do Rio Grande do Norte.
Alguém sabe algum pacote que possa me ajudar?
O ideal, para mim, seria buscar os três vizinhos mais próximos.

Olá, você vai precisar baixar o shape dos dois estado. No caso o pacote geobr, permite baixar (GitHub - ipeaGIT/geobr: Easy access to official spatial data sets of Brazil in R and Python). Com o shape você cria a estrutura de vizinhança. Diferentes formas de criar a vizinhança. (Creating neighborhood matrices for Spatial Polygons in R (updated) | acarioli)

Vou dar uma lida, muito obrigado!

Podes usar o tidyverse + geobr + sf

library(tidyverse)
library(geobr)
library(sf)

Primeiro, com a função read_municipality() do geobr:: é possível obter os municípios de ambos os estados.
O detalhe é que os dados que são baixados já vêm no formato “sf”.

mun_RN <- geobr::read_municipality(code_muni = "RN")
mun_CE <- geobr::read_municipality(code_muni = "CE")

Então podemos usar a função st_intersection() do sf:: para conseguir as interseções.

mun_fronteira <- sf::st_intersection(mun_CE, mun_RN)

Com isso vc já consegue uma lista dos municípios limítrofes. Se precisar projetar no mapa esses municípios, podes fazer:

Uma filtragem dos municípios do RN a partir da coluna do dataset que contém municípios limítrofes

mun_RN_fronteira <- mun_RN %>% 
  dplyr::filter(name_muni %in% mun_fronteira$name_muni.1)

Uma filtragem dos municípios do CE a partir da coluna do dataset que contém municípios limítrofes

mun_CE_fronteira <- mun_CE %>% 
  dplyr::filter(name_muni %in% mun_fronteira$name_muni)

Depois é só plotar usando o ggplot com o geom_sf()

ggplot2::ggplot()+
  geom_sf(data = mun_CE)+
  geom_sf(data = mun_RN)+
  geom_sf(data = mun_CE_fronteira, fill = "green")+
  geom_sf(data = mun_RN_fronteira, fill = "orange")
1 curtida

Obrigado pela ajuda!