Я пытаюсь запустить этот код, который принимает список адресов и запускает каждый из них через API геокодирования Google (используя функцию Addr2latlng ниже), чтобы получить широту/долготу и помещает каждый в данные используя ProcessAddrList ниже.Ошибка R - индекс за пределами
Проблема заключается в том, что Addr2latlng отлично работает для одного адреса, а ProcessAddrList работает нормально до 10 адресов, но из 11 адресов или более я получаю ошибку ниже. Для 10 адресов это работает отлично.
Для запуска кода ниже необходимо загрузить пакеты RCurl и RJSONIO.
Error in geoStruct$results[[1]] : subscript out of bounds
Error in geoStruct$results[[1]] : subscript out of bounds
ProcessAddrList <- function(addrList)
{
resultDF <- data.frame(atext=character(),X=numeric(),Y=numeric(),EID=numeric())
i <- 1
for (addr in addrList)
{
latlng = Addr2latlng(addr)
resultDF <-rbind(resultDF,data.frame(atext=addr,X=latlng[[2]],Y=latlng[[1]],EID=i))
i <- i+1
}
return (resultDF)
}
Addr2latlng <- function(address)
{
url <- MakeGeoURL(address)
apiResult <- getURL(url)
geoStruct <- fromJSON(apiResult, simplify = FALSE)
lat <- NA
lng <- NA
try(lat <- geoStruct$results[[1]]$geometry$location$lat)
try(lng <- geoStruct$results[[1]]$geometry$location$lng)
return(c(lat, lng))
}
Вы уверены, что не достигли предела скорости Google API? – JackeJR