[英]R continue loop on error
我试图让以下示例代码工作而不实际更改任何代码
result = 0
for(i in 1:10){
result = result + i
log("a") #I do not care about this error
result = result + i
}
这应该给出结果= 110
如果我实际上通过复制循环中的部分并增加计数器来手动完成它,它可以完美地工作:
result = 0
#iteration 1
i = 1
result = result + i
log("a")
result = result + i
#iteration 2
i = i+1
result = result + i
log("a")
result = result + i
#iteration 3
i = i+1
result = result + i
log("a")
result = result + i
#etc.
然而,我的真实代码有大约1000行,需要循环几百次。
所以我想有一些选择
options(on.error.just.continue.the.next.line) = TRUE
我读过关于try / tryCatch的内容,但我认为我并不理解
如果您只想运行代码,可以使用try
代替:
result <- 0
for(i in 1:10){
result = result + i
try({log("a")}) #I do not care about this error
result = result + i
}
log(“a”)中的错误:数学函数的非数字参数
log(“a”)中的错误:数学函数的非数字参数
log(“a”)中的错误:数学函数的非数字参数
log(“a”)中的错误:数学函数的非数字参数
log(“a”)中的错误:数学函数的非数字参数
log(“a”)中的错误:数学函数的非数字参数
log(“a”)中的错误:数学函数的非数字参数
log(“a”)中的错误:数学函数的非数字参数
log(“a”)中的错误:数学函数的非数字参数
log(“a”)中的错误:数学函数的非数字参数
result
[1] 110
要关闭消息,请使用
try({log("a")}, silent=TRUE)
如果您担心更大的代码块,可以将其包装在{ }
,如下所示:
result <- 0
for(i in 1:10){
try({ # start code block
result = result + i
log("a") # I do not care about this error
result = result + i
}, silent=TRUE) # end of try function
}
result
[1] 55
这里,结果的第一个赋值在for
循环中完成。 然后发生错误,“擦除”代码块的其余部分的执行,这是第二个赋值。 但是,允许循环执行继续完成。
您可以尝试使用try catch块:
result = 0
for (i in 1:10) {
result = result + i
tryCatch({
log("a") #I do not care about this error
}, warning = function(w) {
# comment out the next print statement for a silent warning
print("warning")
}, error = function(e) {
# comment out the next print statement for a silent error
print("error")
}, finally = {
# cleanup
}
result = result + i
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.