与Plyr并行记录=真

与Plyr并行记录=真,r,parallel-processing,R,Parallel Processing,我不明白为什么“logging”包中的loginfo方法在与ddply和.parallel=TRUE一起使用时似乎找不到 下面是一个突出问题的示例。该示例使用ddply按物种计算平均萼片长度。如果.parallel=FALSE,则此代码按预期工作。但是如果.parallel=TRUE,它会抱怨找不到“loginfo”方法 library(logging) library(doSNOW) registerDoSNOW(cl <- makeCluster(4, type="SOCK")) d

我不明白为什么“logging”包中的loginfo方法在与ddply和.parallel=TRUE一起使用时似乎找不到

下面是一个突出问题的示例。该示例使用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, ...)’
库(日志记录)
图书馆(doSNOW)

registerDoSNOW(cl我需要专门将库导出到奴隶。谢谢,康拉德

clusterEvalQ(cl, library(logging))

您可能需要将函数导出到从属函数。是的,谢谢。这就是问题所在。这就是我需要做的…clusterEvalQ(cl,library(logging))