Ошибка кластера R параллельного класса S4

У меня возникла проблема с кодом для работы с пакетом parallel в R. Я использую R 2.15.

Вот упрощенный пример... У меня есть файл 'animal.R', который содержит следующее:

# animal.R
setClass("Animal", representation(species = "character", legs = "numeric"))

##Define some Animal methods
setGeneric("count",function(x) standardGeneric("count"))
setMethod("count", "Animal", function(x) { x@legs})

setGeneric("countAfterChopping",function(x) standardGeneric("countAfterChopping"))
setMethod("countAfterChopping", "Animal", function(x) { x@legs <- x@legs-1; x@legs})

Затем в моем терминале R я запускаю:

library(parallel)
source('animal.R')

Запускаю локальный кластер из двух узлов:

cl <- makeCluster(rep('localhost', 2))

] Сообщите узлам кластера о классе Animal:

clusterEvalQ(cl, parse('animal.R'))

Затем запустите некоторый код в кластере:

# This works
parSapply(cl, list(daisy, fred), count)

# This doesn't...
parSapply(cl, list(daisy, fred), countAfterChopping)

Остановите кластер:

stopCluster(cl)

Первый вызов parSapply работает, как и ожидалось, но второй выдает эту ошибку:

Error in checkForRemoteErrors(val) : 
  2 nodes produced errors; first error: "Animal" is not a defined class

Есть идеи, что происходит? Почему не работает второй вызов parSapply?

5
задан Ash 24 May 2012 в 10:06
поделиться