如果出错重试 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 循环中继续,直到文件下载成功,只有下载成功后才继续。
我有一个 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 循环中继续,直到文件下载成功,只有下载成功后才继续。