Me gustaría calcular la distancia de pares entre dos geometry
columnas. Es decir, quiero calcular la distancia entre varios pares de geometrías sin calcular la matriz de distancia completa entre cada par posible. He subido con una manera de hacerlo con purrr::map2_dbl
, pero se siente sucio. ¿Hay un mejor enfoque?
library(sf)
library(purrr)
library(dplyr)
# Load sample data and project to EPSG:5070.
nc <- st_transform(crs = "+init=epsg:5070",
st_read(system.file("shape/nc.shp", package = "sf"), quiet = TRUE))
# Here's the full distance matrix. I don't want that.
nc_dist_mat <- st_distance(nc, nc)
# Define a function to calculate distances pairwise:
pairwise_distance <- purrr::partial(purrr::map2_dbl, .f = sf::st_distance)
# distance to self is always zero:
pairwise_distance(st_geometry(nc), st_geometry(nc))
# distance to random county isn't always zero:
pairwise_distance(st_geometry(nc), st_geometry(dplyr::sample_frac(nc)))