如何处理地理编码错误(ggmap R)

时间:2015-06-11 02:00:05

标签: r google-geocoder ggmap

我正在使用ggmap查找位置。某些位置会产生错误。例如,

library(ggmap)

loc = 'Blue Grass Airport'
geocode(loc, output = c("more"))

结果

Error in data.frame(long_name = "Blue Grass Airport", short_name = "Blue Grass Airport",  : 
  arguments imply differing number of rows: 1, 0

如果我无法获得某些地点的搜索结果,这是可以的,但我正在尝试在列表中的100个位置上工作。那么有没有办法获得NA而不是错误并继续下去?如,

library(ggmap)

loc = c('Blue Grass Airport', 'Boston MA', 'NYC')
geocode(loc, output = c("more"))

应生成

NA
Result for Boston
Result for New York City

1 个答案:

答案 0 :(得分:2)

您可以使用R tryCatch()函数优雅地处理这些错误:

loc = 'Blue Grass Airport'
x <- tryCatch(geocode(loc, output = c("more")),
              warning = function(w) {
                            print("warning"); 
                            # handle warning here
                        },
              error = function(e) {
                          print("error");
                          # handle error here
                      })

如果您打算使用for循环或使用apply函数明确循环遍历位置,那么tryCatch()也应该派上用场。