R trying to find latitude/longitude data for cities in europe and getting geocode error messege
You have to geocode just the cities
column (it's a little confusing that you have a data frame called cities
, and within it a column called cities
). When in doubt, try breaking things down into smaller chunks.
For example, try them one at a time ...
cities <- c("ARNHEM","ATHENS","BAAR","CAMBRIDGESHIRE")
library(ggmap)
geocode(cities[1])
## lon lat
## 1 5.89873 51.9851
geocode(cities[2])
## just checking ...
geocode("ATHENS GEORGIA")
## lon lat
## 1 -83.38333 33.95
Now try the vector all at once:
geocode(cities)
## lon lat
## 1 5.8987296 51.98510
## 2 23.7293097 37.98372
## 3 8.5286332 47.19585
## 4 0.0965375 52.27619
Now try with a data frame:
mydat <- read.csv(textConnection("
cities,Freq,lon,lat
ARNHEM,1.00,NA,NA
ATHENS,3.25,NA,NA
BAAR,1.00,NA,NA
BAD VILBEL,1.00,NA,NA
BILTHOVEN,1.00,NA,NA
BOGUS_PLACE,2,NA,NA"))
geocodes <- geocode(as.character(mydat$cities))
mydat <- data.frame(mydat[,1:2],geocodes)
## cities Freq lon lat
## 1 ARNHEM 1.00 5.898730 51.98510
## 2 ATHENS 3.25 23.729310 37.98372
## 3 BAAR 1.00 8.528633 47.19585
## 4 BAD VILBEL 1.00 8.739480 50.18234
## 5 BILTHOVEN 1.00 5.210381 52.13653
## 6 BOGUS_PLACE 2.00 -92.201158 44.49091
I don't know what the result for BOGUS_PLACE
means ...!!
I have just found that this error message:
Error: is.character(location) is not TRUE
can be due to the address being encoded as a number, not a character. This can happen when you select from a data frame for instance, which was my case.
Do:
typeof(address)
and if it turns out to be numeric, change it to char
a2 <- as.character(address)
geocode(a2)