我有一个执行一系列操作的循环。
在某些情况下,问题无法解决,因此代码会返回错误。
如果我继续重新运行循环,最终会找到一个没有错误执行的解决方案。
我想将循环嵌入到while()
语句中,该语句重复循环,直到程序不返回任何错误或警告。
我不想发现错误。相反,我想重复尝试,直到没有错误。
如何做到这一点?
这是一个小例子:
a<-matrix(NA,ncol=1,nrow=sample(1:5,1))
a[sample(1:5,1),1]<-10
这里有时这可以做到有时它不能。 当然这是一个很好的玩具示例,但重点是我想重复这两行代码直到没有错误。
答案 0 :(得分:5)
tryCatch是你的朋友:
for (i in 1:10) {
tryCatch({
print(i)
if (i==7) stop("Urgh, the iphone is in the blender !")
}, error=function(e){cat("ERROR :",conditionMessage(e), "\n")})
}
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] 6
[1] 7
ERROR : Urgh, the iphone is in the blender !
[1] 8
[1] 9
[1] 10
显然,您可能想要使用while而不是for。