Я пытаюсь вычислить расстояние между двумя наборами координат долготы и широты.
Я использую функцию distm () из геосферы пакета, чтобы сделать это.
Работает нормальноесли я вручную ввожу значения в функцию distm (), но не могу заставить ее работать внутри моей команды mutate.
При запуске ее внутри функции mutate я получаю ошибку:
Error in mutate_impl(.data, dots) :
Evaluation error: Wrong length for a vector, should be 2.
@ Dotpi написал в комментарии «Небольшая заметка. Метод geosphere: distm не векторизован. Для векторизации используйте функции apply.» , когда он ответил в этой теме (Функция для вычисления геопространственного расстояния между двумя точками (широта, длина) с использованием R )
Исходя из этого, я предполагаю, что именно это вызывает ошибку в функции mutate, но я не знаю, какрешить это.Я бы предпочел решение по принципу Tidyverse, но любая помощь приветствуется.
Ниже приведен тестовый фрейм данных с сначала кодом, который выдает ошибку, а затем рабочий пример, где я вручную вставляю значения из первой строки в DF.
library(tidyverse)
library(geosphere)
set.seed(1)
DF <- tibble(
Long1 = sample(1:10),
Lat1 = sample(1:10),
Long2 = sample(1:10),
Lat2 = sample(1:10))
DF %>% mutate(
Dist = distm(x= c(Long1, Lat1), y=c(Long2, Lat2), fun = distHaversine ))
distm( x = c(3, 3), y = c(10, 5), fun = distHaversine )