Похоже, что вызовы google_geocode могут возвращать более одного адреса для каждой пары широта / долгота, поэтому вы можете перезаписывать свои данные во фрейме выходных данных.
Кроме того, я не уверен, что ваше утверждение if оценивается правильно.
Вот моя попытка решить вашу проблему:
library(googleway)
origAddress<-read.table(header = TRUE, text = "lat lng
1.436316 103.8299
1.375093 103.8516
1.369347 103.8398
1.367353 103.8426")
#add the output column
origAddress$venadd<-NA
for(i in 1:nrow(origAddress))
{
# Print("Working...")
result <- google_reverse_geocode(location = c(origAddress$lat[i],origAddress$lng[i]),
key=key,
location_type = "rooftop")
#add a slight pause so not to overload the call requests
Sys.sleep(1)
if(result$status =="OK" ){
#multiple address can be returned with in gecode request picks the first one
origAddress$venadd[i] <- result$results$formatted_address[1]
#use this to collect all addresses:
#paste(result$results$formatted_address, collapse = " ")
}
}
Поскольку вызов google_reverse_geocode возвращает адрес, я просто извлекаю первый адрес из результата, сохраняя вызов в Интернет (повышение производительности). Кроме того, поскольку вызов возвращает статус, я проверяю наличие OK и, если существует, сохраняю первый адрес.
Надеюсь, это поможет.