如果出错重试 for-loop R 循环

Retry for-loop R loop if error

我有一个 R For 循环,它从服务器下载数据并将结果添加到 table 但是,我有时会在停止循环时遇到错误。如果我告诉它重做上次下载并继续,它会在下一个错误之前再工作一段时间。 错误与代码或数据无关,而是随机的;有时它会运行 2.5 小时,有时会在下载 相同数据.
45 分钟后停止 如果出现错误并重试,有没有办法让我的循环后退一步? 例如。在

for (i in 1:1000){
    table[i,] <- downloadfnc("URL", file = i)
}

假设我在下载 i=500 时遇到错误,我要做的就是修复:

for (i in 500:1000){
    i <- i + 499     #since i starts at 1, 499+1=500
    table[i,] <- downloadfnc("URL",file = i)
}

然后它下载文件“500”,即使它上次出现错误。 有没有一种方法可以使它自动化,这样如果出现错误,它会后退一步 (i-1) 并重试(可能延迟几秒钟)?

(使用 R 才几个星期,所以请讲基本的)

你可以抛出一个 try-catch 组合。

for (i in 1:1000){
    while(TRUE){
       df <- try(downloadfnc("URL", file = i), silent=TRUE)
       if(!is(df, 'try-error')) break
    }
    table[i,] <- df
}

这将在 while 循环中继续,直到文件下载成功,只有下载成功后才继续。