小编Nik*_*Nik的帖子

在data.table上使用geosphere distm函数来计算距离

我创建了一个data.table,它有6列.我的data.table有一个列可以计算两个位置:位置1和位置2.我正在尝试使用distm函数来计算每行上位置之间的距离,从而创建第7列.geosphere包中的distm包需要针对每个纬度/长度组合使用两个不同的向量.我的下面的代码不起作用,所以我试图弄清楚如何为函数提供向量.

LOC_1_ID LOC1_LAT_CORD LOC1_LONG_CORD LOC_2_ID LOC2_LAT_CORD LOC2_LONG_CORD
 1       35.68440        -80.48090        70624    34.86752   -82.46632
 6       35.49770        -80.62870        70624    34.86752   -82.46632
10       35.66042        -80.50053        70624    34.86752   -82.46632
Run Code Online (Sandbox Code Playgroud)

假设res保存data.table,下面的代码不起作用.

 res[,DISTANCE := distm(c(LOC1_LAT_CORD, LOC1_LONG_CORD),c(LOC2_LAT_CORD, LOC2_LONG_CORD), fun=distHaversine)*0.000621371]
Run Code Online (Sandbox Code Playgroud)

如果我要拉出每个向量,该函数工作正常.

loc1 <- res[LOC1_ID == 1,.(LOC1_LAT_CORD, LOC1_LONG_CORD)]
loc2 <- res[LOC2_ID==70624,.(LOC2_LAT_CORD, LOC2_LONG_CORD)]
distm(loc1, loc2, fun=distHaversine)
Run Code Online (Sandbox Code Playgroud)

真的,我的问题是当该函数需要向量作为参数时,如何应用函数来选择data.table中的列.

r data.table geosphere

7
推荐指数
1
解决办法
5566
查看次数

标签 统计

data.table ×1

geosphere ×1

r ×1