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