Anton Burtsev
Всем доброго дня. Помогите, пожалуйста, упростить код. Есть два дата фрейма одинаковой структуры: в каждом два столбца широта и долгота. Создаю матрицу расстояний всех точек одного дата фрейма до всех точек другого дата фрейма. Смог только через цикл. Есть ли возможность сделать прям вообще красиво?
d <- matrix(nrow = length(S[,1]), ncol = length(P[,1])) # создаем матрицу нужного размера
for(x in 1:length(P[,1])) d[,x] <- sqrt((P$lon[x]-S$lon)^2+(P$lat[x]-S$lat)^2) # заполняем матрицу расстояниями
если работаете с геоданными, можно присмотреться к пакету sf
- нужно вкатиться, но потом нормально.
задача выглядела бы так:
S = data.frame(lon = rnorm(100),
lat = rnorm(100))
P = data.frame(lon = rnorm(100),
lat = rnorm(100))
library(sf)
s_sf = sf::st_as_sf(S, coords = c(1,2), crs = 4326)
p_sf = sf::st_as_sf(P, coords = c(1,2), crs = 4326)
D = sf::st_distance(s_sf, p_sf)