使用Plyr并行记录= TRUE

时间:2013-09-24 12:42:15

标签: r parallel-processing

我很困惑为什么在与ddply和.parallel = TRUE一起使用时,似乎无法找到“logging”包中的loginfo方法。

这是一个突出问题的示例。该示例使用ddply计算物种的平均萼片长度。如果.parallel = FALSE,此代码按预期工作。但如果.parallel = TRUE,它会抱怨它无法找到'loginfo'方法。

library(logging)
library(doSNOW)
registerDoSNOW(cl <- makeCluster(4, type="SOCK"))

data(iris)
ddply(iris, .(Species), function(iris) { 
    loginfo("now working with %s", unique(iris$Species)) # if parallel, can't find function?!
    mean(iris$Sepal.Length) 
}, .parallel=TRUE)

stopCluster(cl)
--
Error in do.ply(i) : task 1 failed - "could not find function "loginfo""
In addition: Warning messages:
1: <anonymous>: ... may be used in an incorrect context: ‘.fun(piece, ...)’
2: <anonymous>: ... may be used in an incorrect context: ‘.fun(piece, ...)’

1 个答案:

答案 0 :(得分:1)

我需要专门将库导出到从属库。谢谢,康拉德。

clusterEvalQ(cl, library(logging))