2013-09-24 72 views
0

我很困惑,爲什麼當使用ddply和.parallel = TRUE時,「logging」包中的loginfo方法看起來無法找到。Plyr並行記錄= 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, ...)’ 
+0

您可能需要將功能導出到從站。 –

+0

是的,謝謝。那就是問題所在。這是我需要做的... clusterEvalQ(cl,library(logging)) –

回答

1

我需要專門將庫導出到奴隸。謝謝,康拉德。

clusterEvalQ(cl, library(logging))