R - cpv (пакет рысаков) и% допар% - PullRequest
0 голосов
/ 17 ноября 2018

Хотелось бы узнать, работает ли функция cpv в пакете рычага с %dopar%? Я получаю следующую ошибку:

задача 1 не выполнена - «объект типа 'S4' не может быть подмножеством"

Вот небольшой пример:

library(doParallel)
library(trotter)

registerDoParallel(cores = 2)

x <- letters

combos <- cpv(2, 1:4)
print(combos)
num_combos <- length(combos)

results_list <- foreach(combo_num=1:num_combos) %dopar% { # many iterations
  y <- x[combos[combo_num]]
  # time consuming stuff follows that involves using y
}

Замена %dopar% на %do% (или просто использование цикла for), и он отлично работает.

1 Ответ

0 голосов
/ 17 ноября 2018

В зависимости от типа кластера необходимо явно указать используемые пакеты с помощью аргумента .packages. Должно работать следующее:

library(doParallel)
library(trotter)
cl <- makePSOCKcluster(2)
registerDoParallel(cl=cl)

x <- letters
combos <- cpv(2, 1:4)
num_combos <- length(combos)

rl <- foreach(combo_num=1:num_combos, .packages="trotter") %dopar% {
  x[combos[combo_num]]
}
...