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, ...)’