我創建了一個data.table,其中有6列。我的data.table有一個列可以比較兩個位置:位置1和位置2.我試圖使用distm函數計算每行位置之間的距離,創建第7列。 geosphere軟件包中的distm軟件包需要計算每個經緯度組合的兩個不同矢量。我的代碼不起作用,所以我想弄清楚如何爲函數提供向量。在data.table上使用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
假設res保存data.table,下面的代碼不起作用。
res[,DISTANCE := distm(c(LOC1_LAT_CORD, LOC1_LONG_CORD),c(LOC2_LAT_CORD, LOC2_LONG_CORD), fun=distHaversine)*0.000621371]
如果我要拉出每個向量的函數工作正常。
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)
真的,我的問題是如何應用函數來選擇data.table中的列時,該功能需要向量作爲參數。
有沒有辦法,你的第二個例子的代碼,「工作正常」的作品。在每種情況下,你都錯過了一個關閉'''',我認爲你應該使用'list()'而不是'c()'。 – thelatemail
[如何有效地計算使用data.table:=]之間的座標對之間的距離可能的重複(http://stackoverflow.com/questions/36817423/how-to-efficiently-calculate-distance-between-pair-of- coordinates-using-data-tab) –