是否可以控制lapply功能的速度?

时间:2015-08-07 18:52:21

标签: r google-maps

我编写了一个脚本,使用R和Google地图对地址列表进行地理编码,但它超出了Google每秒10次查询速度限制。我想将此速度降低到每秒5次查询。

我的函数构造了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错误。

谢谢!

1 个答案:

答案 0 :(得分:1)

使用Sys.sleep等待一段时间,然后继续。您将无法将该R会话用于其他任何事情,但您可以同时运行多个R会话,这样就不会阻止您在另一个R会话中工作。