在 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)}
我正在使用以下代码从 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)}