在%dopar%foreach循环中不存在df的情况下没有rbind的返回?

时间:2018-07-18 15:03:27

标签: r snow

嗨,我正在使用snow软件包创建数据框并重新绑定结果,但是在某些情况下,不会创建该数据框,我想知道是否有一种方法可以退出或返回或忽略该特定作业输出没有错误,因为rbind列不匹配。我现在要做的事情有点麻烦,因为我生成了一个空的df并以这种方式返回它。这是我的代码。

cl <- parallel::makeCluster(12) 
registerDoSNOW(cl)

## setup progress bar 

pb <- txtProgressBar(max = length( id ), style = 3)
progress <- function(n) setTxtProgressBar(pb, n)
opts <- list(progress = progress)


km.df = foreach(id.file = id, .combine = rbind, .options.snow = opts) %dopar% {

if ( file.exists ( id.file) ){
    print (paste( id.this, "found") )
    km <- get.km ( id.file, id.this )
    return (km)
}else{
    print (paste0 ( "KM: ", id.this, " not found") )
    m <- as.data.frame(matrix(0, ncol = 11, nrow = 0) )
# return empyty df
return (m)
    }

}

close(pb)
stopCluster(cl)

因此,如您在上面看到的,我必须创建一个具有相同精确尺寸的数据框。这样做会很好,但我想知道是否还有更强大的退出方式?谢谢!

0 个答案:

没有答案