如果错误,则重试for循环R循环

Ron*_*ash 2 for-loop r download repeat

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

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

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

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

然后它下载文件"500",即使它上次出错.有没有办法让它自动化,所以如果有错误,它需要退一步(i-1)并重试它(可能延迟几秒)?

(已经使用R只有几个星期,所以基本的谈话请)

phi*_*ers 6

你可以抛出一个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
}
Run Code Online (Sandbox Code Playgroud)

这将在while循环内继续,直到文件成功下载,并且仅在成功下载文件时继续.