Verwenden der Geosphären-Entfernungsfunktion für eine data.table, um Entfernungen zu berechnen

Ich habe eine data.table mit 6 Spalten erstellt. Meine data.table hat eine Spalte, die zwei Standorte vergleicht: Standort 1 und Standort 2. Ich versuche, die distm-Funktion zu verwenden, um den Abstand zwischen den Standorten in jeder Zeile zu berechnen und eine 7. Spalte zu erstellen. Das distm-Paket im geosphere-Paket erfordert zwei verschiedene Vektoren für jede Lat / Long-Kombination, mit der verglichen werden soll. Mein unten stehender Code funktioniert nicht, daher versuche ich herauszufinden, wie man der Funktion Vektoren zur Verfügung stellt.

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

Angenommen, res enthält die Datentabelle. Der folgende Code funktioniert nicht.

 res[,DISTANCE := distm(c(LOC1_LAT_CORD, LOC1_LONG_CORD),c(LOC2_LAT_CORD, LOC2_LONG_CORD), fun=distHaversine)*0.000621371]

Wenn ich jeden Vektor herausziehen würde, funktioniert die Funktion einwandfrei.

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)

irklich, meine Frage ist, wie man Funktionen anwendet, um Spalten in einer data.table auszuwählen, wenn diese Funktion Vektoren als Parameter benötig

Antworten auf die Frage(2)

Ihre Antwort auf die Frage