本文介绍了R中的foreach()中的try()问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用try()
函数来处理并行化的for循环中发生的错误:
I am trying to use the try()
function to deal with errors that are occurring in my parallelised for loop:
results <- foreach (i = 1:2, .errorhandling = 'remove') %dopar% {
res <- try(myfun(i), TRUE)
}
与
myfun <- function(i){
if (i==1) return(rnorm(1))
else stop('error')
}
我收到以下错误消息
Error in checkForRemoteErrors(val) :
one node produced an error: Error in myfun(i) : error
如何获取foreach的循环"以忽略错误消息(或者至少更优雅地处理它)?
How can I get the foreach "loop" to ignore the error message (or at least deal with it a little more elegantly)?
推荐答案
您可以使用tryCatch
并适当地处理错误.这里的错误将被忽略(返回NULL)
You can use tryCatch
and deal with the error appropriately. Here the error is ignored (returning NULL)
results <- foreach (i = 1:2) %dopar% {
res <- tryCatch({
myfun(i)
}, error=function(e) NULL)
}
,或者仅使用内置的.errorhandling='remove'
,而不使用try
应该已经消除了错误.
or just using the builtin .errorhandling='remove'
as you have, without the try
should remove the errors already.
这篇关于R中的foreach()中的try()问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!