如何对地址字符矩阵进行地理编码并输出Long和Lat?

时间:2014-12-18 23:10:46

标签: r ggplot2 ggmap

我有一个n x 1地址列表(其类为'character'),我想输出每个地址的地理编码为n x 2 data.frame(lat和long)。你怎么用R写这个,有没有一种有效的方法呢?如果你能展示一些例子,那将会很棒。

现在,我正在运行这样的for循环:

library(taRifx.geo) ## for geocode

hmm <- c()
for (i in (R2012)){
  hmm <- c(hmm, geocode(i, output = c("latlon", "latlona", "more", "all")))
}

但结果是lat和lon的交替单列:

$lon
[1] -122.1034

$lat
[1] 47.55304

$lon
[1] -122.1034

$lat
[1] 47.55304

1 个答案:

答案 0 :(得分:1)

如果您强制使用for循环,则可以执行以下操作。

library(tidyr)

R2012 <- c("Tokyo", "Paris")

lonlat <- list()

for(i in R2012){

    lonlat[[i]] <- geocode(i, output = c("latlon", "latlona", "more", "all"))
}

unnest(lonlat, city) 

#   city        lon      lat
#1 Tokyo 139.691706 35.68949
#2 Paris   2.352222 48.85661

但是,我认为这里不需要循环。你可能想尝试这样的事情。

foo <- geocode(R2012, output = c("latlon", "latlona", "more", "all"))
foo$city <- R2012

#         lon      lat  city
#1 139.691706 35.68949 Tokyo
#2   2.352222 48.85661 Paris