0

我已经使用 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错误暂时的?)。

4

1 回答 1

1

根据评论中的建议,当遇到 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)
              }
于 2017-06-11T16:57:12.373 回答