Я пытаюсь использовать R с пакетами tidyverse, и у меня возникают проблемы с применением функции к моим данным. Мои данные включают координаты широты и долготы, и я хочу рассчитать расстояние от каждого местоположения (строки моего фрейма данных) до контрольного местоположения. Я пытаюсь использовать функцию geosphere :: distm.
library(tidyverse)
library(geosphere)
my_long <- 172
my_lat <- -43
data <- data %>% rowwise() %>% mutate(
dist = distm(c(myLong, myLat), c(long, lat), fun=distHaversine) # this works
)
У меня он работает с помощью функции rowwise()
, как указано выше, но она устарела, поэтому я хочу знать, как это сделать с современными tidyverse
, то есть dplyr
или purrr
, я думаю, например, самое близкое, что у меня есть, - это map2:
my_distm <- function(long1, lat1, long2, lat2)
distm(c(long1, lat1), c(long2, lat2), fun=distHaversine)
data <- data %>% mutate(
dist = map2(long, lat, my_distm, my_long, my_lat) # this doesn't
)
Пока что я потерпел неудачу.
Vectorize(my_distm)
, и он должен работать прямо в вашемmutate()
вызове. - person Steven Beaupré   schedule 23.08.2017