我有一个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只有几个星期了,所以请说基本的话)
答案 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循环中继续,直到文件成功下载,并且仅在成功下载文件后继续。