Я написал сценарий для геокодирования списка адресов с использованием R и Google Maps, но это превышает 10-кратное ограничение скорости запросов Google в секунду. Я хотел бы замедлить это до 5 запросов в секунду.Можно ли управлять скоростью функции lapply?
Моя функция создает URL-адрес, а затем я вызываю функции, используя do.call, rbind и lapply, чтобы создать свой геокодированный набор данных.
geoc <- function(address){
out <- tryCatch({
url <- "http://maps.google.com/maps/api/geocode/json"
response <- GET(url,query=list(sensor="FALSE",address1=address))
json <- fromJSON(content(response,type="text"))
loc <- json$results[[1]]$geometry$location
return(c(address1=address, long=loc$lng, lat=loc$lat))
})
return(out)
}
result <- do.call(rbind,lapply(as.character(sample$location),geoc))
Есть ли способ замедлить это примерно до 5 запросов в секунду? Он отлично работает, если я только геокодирую 5 или 10 за раз, но что-то там вызывает ошибки Google.
Спасибо!
Возможно, сработает функция Sys.sleep (0.2)? –
Работает как шарм, спасибо CactusWoman! – Phoebe