在 r 中的命令中添加延迟

Adding a delay in a command in r

我正在使用以下代码从 google 地图 api 获取城市坐标。问题是 google returns 出现以下错误:

OVER_QUERY_LIMIT 

每秒超过 5 个请求(每天总共 2500 个)。每次为下面的代码中的每一行获取地理编码时,我都需要添加 210 毫秒的延迟。我怎样才能在 r 中做到这一点?

mydata$geocode <- geocode(as.character(mydata$value))

谢谢!

您可以尝试使用 Sys.sleep() 函数,如本例所示:

myf <- function(x){
  Sys.sleep(0.210)
  return(x+1)}

t1 <- Sys.time()
myf(1)
[1] 2

t2 <- Sys.time()

> t2-t1
Time difference of 0.221406 secs

因此在您的场景中,代码可能是:

mygeofunction <- function(x){
Sys.sleep(0.210) 
geocode(as.character(x))}

uniquecitynamesbackers$geocode <- mygeofunction(uniquecitynamesbackers$value)
Perhaps something like:

irist <- head(iris, 10)

irist$test <- NA

 for(i in 1: dim(irist)[1]){
   irist$test[i] <- irist$Sepal.Length[i] + 1
   print(irist$test)
   Sys.sleep(0.210)
 }
 [1] 6.1  NA  NA  NA  NA  NA  NA  NA  NA  NA
 [1] 6.1 5.9  NA  NA  NA  NA  NA  NA  NA  NA
 [1] 6.1 5.9 5.7  NA  NA  NA  NA  NA  NA  NA
 [1] 6.1 5.9 5.7 5.6  NA  NA  NA  NA  NA  NA
 [1] 6.1 5.9 5.7 5.6 6.0  NA  NA  NA  NA  NA
 [1] 6.1 5.9 5.7 5.6 6.0 6.4  NA  NA  NA  NA
 [1] 6.1 5.9 5.7 5.6 6.0 6.4 5.6  NA  NA  NA
 [1] 6.1 5.9 5.7 5.6 6.0 6.4 5.6 6.0  NA  NA
 [1] 6.1 5.9 5.7 5.6 6.0 6.4 5.6 6.0 5.4  NA
 [1] 6.1 5.9 5.7 5.6 6.0 6.4 5.6 6.0 5.4 5.9
> 
> t2 <- Sys.time()
> 
> t2-t1
Time difference of 2.261692 secs

所以对你来说可能是:

uniquecitynamesbackers$geocode <- NA

for(i in 1: dim(uniquecitynamesbackers)[1]){
uniquecitynamesbackers$geocode[i] <- geocode(as.character(uniquecitynamesbackers$value[i]))
Sys.sleep(0.210)}