我有一个复杂的长函数,我用它来进行模拟。它可能会产生错误,主要与最终具有零方差的相等值的随机向量有关,被输入到 PCA 或逻辑回归中。
我正在使用 doMC
和 plyr
在集群上执行它。我不想tryCatch
函数内部的每一个小事情,因为错误的可能性很多,而且每个错误的概率都很小。
如何 tryCatch 每次运行,而不是 tryCatch
处理每一行?代码是这样的:
iteration = function(){
a really long simulation function where errors can happen
}
reps = 10000
results = llply(1:reps, function(idx){out<-iteration()},.parallel=TRUE)
大约一年后编辑:
foreach
包使这比使用 plyr
library(foreach)
output <- foreach(i=1:reps, .errorhandling = 'remove')%dopar%{
function
}
最佳答案
您可以将 try catch 循环包装在传递给 llply 的函数中吗?
results = llply(1:reps, function(idx){
out = NA
try({
out<-iteration()
}, silent=T)
out
},.parallel=TRUE)
关于r - R 中具有复杂函数和 plyr 的 tryCatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15075113/