处理 R 地理编码功能中的 500 个内部服务器错误
Handling 500 internal server error in R geocoding function
我已经使用 googleway 包编写了一个函数来对地址进行地理编码,不幸的是,它在遇到 500 内部服务器错误时崩溃了。函数如下:
rugeocoder.fun <- function(addr){
require(googleway)
output <- vector("list", length=length(addr))
for(i in 1:length(addr)){
output[[i]] <- google_geocode(address=addr[i], key="myapikey", language="ru", simplify=T)
print(i)
}
return(output)
}
(是的,我知道我可以使用 lapply 而不是函数内的循环来完成此操作,但我喜欢将计数器打印到控制台。)
自然地,由于一个相对简单的错误,这导致我丢失了到目前为止的所有输出。有没有什么我可以做的或者有这个功能:a)保存输出到那个点,所以我可以在那个地址重新启动它或者 b)继续尝试直到服务器错误消失(我想 500 错误可能是临时的?)。
根据评论中的建议,当遇到 tryCatch() 错误时,我能够防止循环崩溃:
rugeocoder.fun <- function(addr){
require(googleway)
output <- vector("list", length=length(addr))
tryCatch({
for(i in 1:length(addr)){
output[[i]] <- google_geocode(address=addr[i], key="myapikey", language="ru", simplify=T)
print(i)
}},error=function(e) output[[i]] <- "Error: reattempt")
return(output)
}
我已经使用 googleway 包编写了一个函数来对地址进行地理编码,不幸的是,它在遇到 500 内部服务器错误时崩溃了。函数如下:
rugeocoder.fun <- function(addr){
require(googleway)
output <- vector("list", length=length(addr))
for(i in 1:length(addr)){
output[[i]] <- google_geocode(address=addr[i], key="myapikey", language="ru", simplify=T)
print(i)
}
return(output)
}
(是的,我知道我可以使用 lapply 而不是函数内的循环来完成此操作,但我喜欢将计数器打印到控制台。)
自然地,由于一个相对简单的错误,这导致我丢失了到目前为止的所有输出。有没有什么我可以做的或者有这个功能:a)保存输出到那个点,所以我可以在那个地址重新启动它或者 b)继续尝试直到服务器错误消失(我想 500 错误可能是临时的?)。
根据评论中的建议,当遇到 tryCatch() 错误时,我能够防止循环崩溃:
rugeocoder.fun <- function(addr){
require(googleway)
output <- vector("list", length=length(addr))
tryCatch({
for(i in 1:length(addr)){
output[[i]] <- google_geocode(address=addr[i], key="myapikey", language="ru", simplify=T)
print(i)
}},error=function(e) output[[i]] <- "Error: reattempt")
return(output)
}