重复循环,直到找不到错误

时间:2015-07-16 11:19:25

标签: r

我有一个执行一系列操作的循环。

在某些情况下,问题无法解决,因此代码会返回错误。

如果我继续重新运行循环,最终会找到一个没有错误执行的解决方案。

我想将循环嵌入到while()语句中,该语句重复循环,直到程序不返回任何错误或警告。

我不想发现错误。相反,我想重复尝试,直到没有错误。

如何做到这一点?

这是一个小例子:

a<-matrix(NA,ncol=1,nrow=sample(1:5,1))
a[sample(1:5,1),1]<-10

这里有时这可以做到有时它不能。 当然这是一个很好的玩具示例,但重点是我想重复这两行代码直到没有错误。

1 个答案:

答案 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。