0

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

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

当我设置一组输入来检查是否需要 5-6 小时来运行所有模拟时,这令人沮丧,我回来发现它在前 45 分钟内崩溃了。

当我努力修复错误/识别将我推向该错误的输入时,关于如何忽略/捕获错误的任何想法?

谢谢

4

1 回答 1

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

如您所见,我的模拟运行在所有循环索引上。

于 2013-07-24T15:16:43.563 回答