如果出现错误,请重试循环R循环

如果出现错误,请重试循环R循环,r,for-loop,download,repeat,R,For Loop,Download,Repeat,我有一个R For循环,它从服务器下载数据并将结果添加到表中,但有时会在停止循环时出错。如果我告诉它重做上一次下载并继续,它会在下一个错误之前工作一段时间。 错误不是与代码或数据有关,而是随机的;有时运行2.5小时,有时在下载相同数据45分钟后停止运行。 如果出现错误,有没有办法让我的循环后退一步并重试? 例如在 for(1:1000中的i){ table[i,]您可以抛出一个try-catch组合 for (i in 1:1000){ while(TRUE){ df &l

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

for(1:1000中的i){

table[i,]您可以抛出一个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
}
for(1:1000中的i){
while(TRUE){

df看起来像是内存问题。downloadfnc究竟返回什么?downloadfnc(我给它起了个名字,它实际上是“DODSGrab”)返回一个正式的类SpatialTemporaldataFrame(与一些数据协调).但我简化了我的问题代码。--N8TRO,我不认为这是内存问题,因为我只下载了几kb的数据,接收数据需要几秒钟,我覆盖了以前的下载。我认为这是服务器的问题。我将在晚上尝试一下,看看它是如何运行的。将更新。这个循环有可能是maki吗正在处理太多的请求并使服务器过载?(我有一些奇怪的症状)…因此它似乎有效,已经运行了大约8.5个小时。前3个很好(完成了60%的任务)。但之后,速度急剧下降(在接下来的5个小时内下降了6%).我在6小时左右检查了服务器的速度,结果我和达拉斯(测试)的服务器速度下降了相同的数量(使用webgetest.org).8小时后,我的速度下降到5分钟/负载,达拉斯是300毫秒。现在我的速度在几秒到5分钟之间波动。不完全确定,但这些症状听起来并不像是与R相关的问题。服务器应该能够得到相当多的ping,所以1000个作业应该不会很累。你是否看到任何与RAM相关的问题;如何这些下载量很大吗?可能是您当地的公司陷入困境,您可能希望在本地写入文件,而不是将它们全部存储在RAM中,但如果不是这样,服务器就会出问题。这些文件不超过几kbs(10×4数据帧)。早上看起来还可以(回到3s/下载).我在想,如果在下载失败或通过之前,While循环在连接过程中循环,服务器可能会感知到同样多的用户(我不知道这是否合理)。但最后几个小时很好。
for (i in 500:1000){
    i <- i + 499     #since i starts at 1, 499+1=500
    table[i,] <- downloadfnc("URL",file = i)
}
for (i in 1:1000){
    while(TRUE){
       df <- try(downloadfnc("URL", file = i), silent=TRUE)
       if(!is(df, 'try-error')) break
    }
    table[i,] <- df
}