一个循环程序中,某几次循环程序会报错Error,每次报错,程序就会中断,但是又想把程序运行下去,如果人工进行操作,这个过程费时费力,我们的目标是,程序运行到Error位置,自动跳过本次循环,继续运行。
- break 指跳出循环, 程序的控制权立即传递到循环体之外的语句。
- next指跳出本次循环,循环不会终止,会继续进行下一个迭代。需要提前运行一次会报错的命令,并将其赋值给R对象fit。
例如下面的代码:
break_num <- 0
for(m in 1:100){
...
...
#假设在内层循环程序会报错,程序的其他位置不会报错。
for(i in 1:20){
fit <- try( Self_fun(parameter1,parameter2) )
if("try-error" %in% class(fit)) {
break
}
}
...
...
if("try-error" %in% class(fit)){
if(m == break_num + 1){
break_num <- m
}else{
a <- break_num + 1
b <- m - 1
save.image( file = paste("1_code_", a, b, ".rda", sep="_") )
break_num <- m
}
next
}
...
...
}
上面程序实现的功能:
- 自动保存有效循环时的值;
- 跳出会出现Error的内循环,在外循环中跳过本次循环,继续外循环。
其中break_num指外循环中程序坏掉时 循环的次数。...表示一些其他代码块。
或者更简单的,使用break跳出循环,使用next跳出本次循环:
break_num <- 0
for(m in 1:100){
...
...
#假设在内层循环程序会报错,程序的其他位置不会报错。
for(i in 1:20){
fit <- try( Self_fun(parameter1,parameter2) )
if("try-error" %in% class(fit)) {
break #跳出内层循环
}
} #内层循环
...
...
next #跳出本次循环,循环继续
} #外层循环
参考:
R语言 try() 错误识别_r语言try_箫声依旧小鱼儿的博客-CSDN博客
R语言-处理异常值或报错的三个示例 - 尾巴AR - 博客园 (cnblogs.com)
R语言初级教程(22): 条件和循环语句 - 知乎 (zhihu.com) (break 和next介绍请看这篇文章)