Использование функции revgeocode в цикле FOR. Требуется помощь
Моя проблема, как подробно описано ниже:
Мои входные данные имеют формат, указанный в небольшом примере ниже:
USERID LONGITUDE LATITUDE
1 -8.79659 55.879554
2 -6.874743 56.87896
3 -3.874743 58.87896
4 -10.874743 80.87896
Я использовал следующий код для обратного геокодирования широты и долготы
dset <- as.data.frame(dataset[,2:3])
dset <- na.omit(dset)
library (ggmap)
location <- dset
nrow(location)
locaddr <- matrix(0,nrow(location),1)
location <- as.matrix(location)
for (i in 1:nrow(location))
{
locaddr[i,] <- revgeocode(location[i,], output = c("address"), messaging = FALSE, sensor = FALSE, override_limit = FALSE)
}
Теперь определенная долгота-широта возвращает NA из Google Maps API. Но когда это происходит, цикл for по какой-то причине прерывается. Я хотел бы обойти это и продолжить обработку оставшихся точек данных. У меня была одна идея: следующий псевдокод:
if i = nrow(location)
continue
else
repeat revgeocode for loop here
end-for
end-if.
Просьба сообщить, как это можно сделать или если есть лучший способ сделать это.
Заранее спасибо за ваше время и помощь.
1 ответ
Решение
Нет необходимости использовать for-loop
Вот. Я рекомендую вам использовать lapply
чтобы избежать побочного эффекта и заранее выделить проблемы:
locaddr <- lapply(seq(nrow(location)), function(i){
revgeocode(location[i,],
output = c("address"),
messaging = FALSE,
sensor = FALSE,
override_limit = FALSE)
})