我正在使用R软件包foreach
。
当foreach
块中存在错误时,很难再次发生并且很难调试。
以以下脚本为例。
我想在i=4
停下来查看问题。但是,它停在i=10
。
有解决方案吗?
library(foreach)
foreach(i = icount(10)) %do% {
if (i == 4){
e <- simpleError("test error")
stop(e)
}
}
答案 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)
}
)
}