Search code examples
rgoogle-geocoderggmap

how to handle error from geocode (ggmap R)


I'm using ggmap to find locations. Some locations generates error. For example,

library(ggmap)

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

results in

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

It's ok if I can't get results for some locations, but I'm trying to work on 100 locations in a list. So is there a way to get NA instead of error and keep things go on? E.g.,

library(ggmap)

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

should generate

NA
Result for Boston
Result for New York City

Solution

  • You can make use of the R tryCatch() function to handle these errors gracefully:

    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
                          })
    

    If you intend to loop over locations explicitly using a for loop or using an apply function, then tryCatch() should also come in handy.