R foreach在i

时间:2018-11-21 12:26:45

标签: r parallel-foreach

我正在使用R软件包foreach。 当foreach块中存在错误时,很难再次发生并且很难调试。

以以下脚本为例。 我想在i=4停下来查看问题。但是,它停在i=10

有解决方案吗?

library(foreach)
foreach(i = icount(10)) %do% {
    if (i == 4){
        e <- simpleError("test error")
        stop(e)
    }
}

2 个答案:

答案 0 :(得分:1)

处理此问题的一种方法是在browser()内插入tryCatch,如下所示:

foreach(i = icount(10)) %do% {
  tryCatch(
    if (i == 4){
      e <- simpleError("test error")
      stop(e)
    },
    error = function(e) browser()
  )
}

这将在发生错误时生成环境的浏览器,使您可以检查任何对象和/或调试代码。

然后您的控制台将如下所示,您可以询问i的值是什么。像这样:

浏览[1]>我

[1] 4

答案 1 :(得分:1)

您可以这样做:

foreach(i = icount(10)) %do% {
  tryCatch(
    if (i == 4){
      browser()
      e <- simpleError("test error")
      stop(e)
    }
  )
}