2017-03-01 54 views
0

兩列使用revgeocode我有一個data.table DF,在數據集看起來像下面在data.table

Pickup_longitude Pickup_latitude 
1:   -73.945   40.799 
2:   -73.930   40.864 
3:   -73.944   40.696 
4:   -74.001   40.688 
5:   -73.926   40.755 
6:   -73.936   40.812 

我要介紹的第三列「Pickup_Loc」這將是文本的位置。爲了獲得這個我使用revgeocodeggmap庫。

我無法在列上應用此功能。

我想這

df <- df[, pickup_loc := lapply(.SD,revgeocode), .SDcols = c("Pickup_longitude","Pickup_latitude")] 

但它給了我這樣的錯誤:

Error: is.numeric(location) && length(location) == 2 is not TRUE

任何人都可以請幫助?

+0

嘗試分配幀和在任務的一側列另一列。檢查我的樂句語法,我無法運行這個驗證,我經常錯過逗號和花括號。 'df $ pickup pickup _loc < - lapply(.SD,revgeocode),.SDcols = c(「Pickup_longitude」,「Pickup_latitude」))' – sconfluentus

+0

'lapply'將分別應用於每列。據推測,你需要同時應用這兩列,也許用'do.call' – Frank

回答

1

ggmap::revgeocode需要位置在經度/緯度格式是長度的數字陣列2的建議是使用mapply來連接的經度和緯度入長度的數組2.

dt <- fread(" 
Pickup_longitude,Pickup_latitude 
-73.945,40.799 
-73.930,40.864 
-73.944,40.696 
-74.001,40.688 
-73.926,40.755 
-73.936,40.812 
") 

dt[, Address:=mapply(function(long, lat) ggmap::revgeocode(c(long, lat)), 
    Pickup_longitude, Pickup_latitude)]