2016-04-14 16 views
0

Meine Datensatz ist als unten-Wie Abstand zwischen mehreren lon lat Vektoren berechnen R mit

a 
Location loc.Lon loc.Lat Pincode  pin.lon  pin.lat 
SPM  79.94533 12.97025 "602105" 79.95285  12.96752 
SPM  79.94533 12.97025 "602106" 79.88568  12.91943 

Ich möchte den Abstand zwischen (loc.Lon, loc.Lat) und (pin.lon berechnen, pin.lat) für beide Pincodes mit dem Paket ggmap.

, wenn ich den folgenden Code ausführen, bekomme ich das gewünschte Ergebnis -

mapdist(c(a$loc.Lon[2], a$loc.Lat[2]), c(a$pin.lon[2],a$pin.lat[2]), mode = "driving") 

aber wenn ich die folgende Abfrage für den gesamten Datensatz eines ausführen, bekomme ich einen Fehler -

a$dist = mapdist(c(a$loc.Lon, a$loc.Lat), c(a$pin.lon,a$pin.lat), mode = "driving") 

Fehler, den ich bekomme -

Error: is.character(from) is not TRUE 

Bitte helfen Sie mir, dies sortiert.

Antwort

3

mapdist akzeptiert Vektoren für die from und to Argumente, so können Sie sie konvertieren und diese Funktion auf jede Zeile Ihres Datensatzes anwenden.

Angenommen Sie km Entfernung wollen:

get_km_from_mapdist <- function(i) { 
    mapdist(as.numeric(a[i, c('loc.Lon','loc.Lat')]), 
      as.numeric(a[i, c('pin.lon','pin.lat')]), 
      mode='driving')$km 
} 

a$dists = sapply(1:nrow(a), get_km_from_mapdist) 
1

Guss die Koordinaten als Strings mit as.character() und paste0() sie, wenn mapdist direkt auf Ihre Daten aufrufen.

Verwandte Themen