忽略R中的错误

时间:2013-07-24 15:05:34

标签: r error-handling

我在R中运行复杂但相对快速的模拟(每次模拟大约需要5-10分钟),我开始与各种输入值并行运行,以测试我的一些算法的稳健性

似乎存在一个问题:输入的某些排列导致模拟中的致命错误,整个代码崩溃,导致模拟结束。是否有一种简单的方法来捕获错误(可能来自各种位置)并让它忽略这些输入值并继续下一步?

当我设置一组输入以检查是否需要5-6个小时来完成所有模拟时,我感到很沮丧,我回来发现它在前45分钟内崩溃了。

当我努力修复错误/识别输入时,我会发现错误,有关如何忽略/捕获错误的任何想法?

由于

1 个答案:

答案 0 :(得分:1)

我不知道你是如何组织你的模拟的,但我猜你有一个循环,你可以在每一步检查使用新的参数。

您可以使用tryCatch。如果输入错误,我会抛出一个错误。

step.simul <- function (x) {
  stopifnot(x%%2 == 1, x>0)
  (x - 1)/2
}

然后使用tryCatch,我用代码标记坏输入 告诉你输入错误:

sapply(1:5, function(i)tryCatch(step.simul(i), error=function(e)-1000-i))
[1]     0 -1002     1 -1004     2

如您所见,我的模拟遍历所有循环索引。