处理 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)
              }