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

时间:2015-08-13 23:02:08

标签: r for-loop download repeat

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

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

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

$foo = [
    'bar'  => 'baz',
];
$foo = (object)$foo;
echo $foo->bar;
然后它下载文件&#34; 500&#34;即使它上次出错了。 有没有办法让它自动化,所以如果有错误,它需要退一步(i-1)并重试它(可能延迟几秒)?

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

1 个答案:

答案 0 :(得分: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
}

这将在while循环中继续,直到文件成功下载,并且仅在成功下载文件后继续。