2017-03-01 57 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)]