在data.table中的两列上使用revgeocode

时间:2017-03-01 03:01:22

标签: r data.table

我有一个data.table df,其中数据集如下所示

   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',它将是该位置的文本。要获得此功能,我使用的是revgeocode库中的ggmap

我无法在列上应用此功能。

我试过这个

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

但它给了我一个这样的错误:

  

错误:is.numeric(location)&amp;&amp; length(location)== 2不为TRUE

有人可以帮忙吗?

1 个答案:

答案 0 :(得分: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)]