This mimics redist's redist.adjacency using GEOS to create the patterns, rather than sf. This is faster than that version, but forces projections.
adjacency(shp, epsg = 3857)
sf dataframe
numeric EPSG code to planarize to. Default is 3857.
list with nrow(shp) entries
data(precincts)
adj <- adjacency(precincts)