0
以下代碼塊僅在ddply未並行化時才起作用;即,ddply(..., .parallel = FALSE)
。爲什麼不在.parallel=TRUE
?我有一個計算需要並行化和ddply是完美的,但我似乎無法弄清楚如何使用ddply並行化包括一個tryCatch()
語句的函數。這就好像ddply無視代碼在tryCatch()
內的事實。在並行化的ddply中使用tryCatch()不起作用
# tryCatch in ddply
library(plyr)
library(dplyr)
library(reshape2)
library(parallel)
library(doParallel)
theFunc <- function(df){
m <- df$a
m <- tryCatch(
{if(m>1){
# do something normal
m+1
}else{
# do something that throws an error
m+"mehwhatever"
}
},
warning=function(war){
message(war)
m <- df$a
return(m)
},
error=function(cond) {
message(cond)
m <- df$a
return(m)
},
finally={
print("Does this even work?")
print(m)
}
)
df$a <- m
return(df)
}
df <- data.frame(a=1:10)
print(df)
nodes <- detectCores(logical = FALSE)
cl <- makeCluster(nodes)
registerDoParallel(cl)
df <- ddply(.data = df,.variables = c("a"),.fun = function(x){return(theFunc(x))},.parallel = TRUE,.paropts = list(.export=c(as.vector(lsf.str()))))
parallel::stopCluster(cl)
print(df)
是的 - 這是重複的。抱歉!我環顧了很長一段時間,並沒有遇到那種 - 很多道歉。我應該刪除這個問題嗎? –
Nop你可以離開它我想。有時候用不同的方式來搜索一個問題是很有用的。如果他們遇到您的問題,他們會被重定向。 –