【发布时间】:2018-11-14 15:00:12
【问题描述】:
我正在尝试计算两组经纬度坐标之间的距离。
我正在使用 geosphere 包中的函数 distm() 来执行此操作。
如果我在 distm() 函数中手动输入值,它可以正常工作,但我无法让它在我的 mutate 命令中工作。
在 mutate 函数中运行它时出现错误:
Error in mutate_impl(.data, dots) :
Evaluation error: Wrong length for a vector, should be 2.
@Dotpi 在评论中写道“一个小注释。geosphere:distm 方法未矢量化。要对其进行矢量化,请使用 apply 函数。” 当他在此线程中回复时 (Function to calculate geospatial distance between two points (lat,long) using 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 )
【问题讨论】: