我目前正在使用for循环和Googleway包来对大量地址进行地理编码。最初,我遇到了“500内部服务器错误”的问题,导致循环执行停止。我使用tryCatch()解决了这个问题。然而,由于这通常是一种短暂的错误,我希望该函数重复尝试出错的地址,直到它收到结果或达到某个任意的尝试次数,比如说10次。
不幸的是,我发现tryCatch()及其相关文档令人困惑,所以我不知道如何做除了让它抛出一个错误消息并继续执行之外的其他操作。以下是我的当前代码:
不幸的是,我发现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)
}
this_env <- environment()
吗?这里的环境有点复杂,我很难理解结果是如何从由 safely() 函数创建的闭包移动到全局环境中以便被分配给一个对象。 - Sean NortontryCatch()
似乎使用它自己的环境,所以仅仅执行result <- fn(...)
是不起作用的。 - Richie CottonIn assign("result", fn(...), envir = this_env) : restarting interrupted promise evaluation
,返回一个完全为空的列表。有什么想法可以解决这个问题吗? - Sean Norton