在R中使用mutate_at
或map
函数计算多个位置之间的距离,可以通过以下步骤实现:
dplyr
和purrr
这两个R包,它们提供了mutate_at
和map
函数。library(dplyr)
library(purrr)
latitude
和longitude
两列中:locations <- data.frame(latitude = c(40.7128, 34.0522, 37.7749),
longitude = c(-74.0060, -118.2437, -122.4194))
geosphere
包中的distGeo
函数来计算地球上两个点之间的大圆距离:library(geosphere)
calculate_distance <- function(lat1, lon1, lat2, lon2) {
distGeo(c(lon1, lat1), c(lon2, lat2))
}
mutate_at
函数或map
函数来应用计算距离的函数到每一对位置上,并将结果存储在新的列中:# 使用mutate_at函数
result <- locations %>%
mutate_at(vars(latitude, longitude),
list(distance = ~calculate_distance(., locations$latitude, locations$longitude)))
# 使用map函数
result <- locations %>%
mutate(distance = map2_dbl(latitude, longitude, ~calculate_distance(.x, .y, locations$latitude, locations$longitude)))
在上述代码中,我们使用了mutate_at
函数和map2_dbl
函数来将计算距离的函数应用到每一对位置上,并将结果存储在名为distance
的新列中。注意,mutate_at
函数需要使用list
来指定要应用的函数和列,而map2_dbl
函数则直接接受两个列作为参数。
计算距离的函数calculate_distance
使用了geosphere
包中的distGeo
函数,该函数接受两个经纬度坐标作为参数,并返回它们之间的大圆距离。
这个方法可以用于计算任意数量的位置之间的距离,只需将位置信息存储在相应的列中即可。
推荐的腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云