Ошибка при параллельной реализации R: объект закрытия типа не является подмножеством - PullRequest
0 голосов
/ 08 мая 2020

Я работаю над реализацией схемы Монте-Карло. Я применяю эту симуляцию для различных наборов данных, содержащихся в кадре данных df . Для одного набора данных функция MCdetermination () вычисляет интересующее значение. Чтобы сократить время работы, я хочу использовать пакет doParallel.

Когда я устанавливаю входные значения и запускаю каждую строку кода вручную, все работает отлично, но когда я вызываю функцию с помощью MCfullsimulation (...), я получаю сообщение об ошибке

Ошибка во время обертывания: не удалось выполнить задачу 1 - «объект типа 'closure' не является подмножеством»

Кроме того, без параллельных вычислений (т.е.% do% вместо% dopar%) все работает при вызове функция. Что я сделал не так? Я не привык работать с несколькими ядрами. Пожалуйста, помогите мне.

MCfullsimulation <- function(df, r, J){
  source("MCdetermination.R")
  library(doParallel)
  cl <- makeCluster(2)
  registerDoParallel(cl)
  v0 <- foreach(i = 1:nrow(df), .export = c('MCdetermination'), .combine = rbind) %dopar% {
      MCdetermination(df[i,], r, J)
    }
  return(v0)
}

...