Я работаю над реализацией схемы Монте-Карло. Я применяю эту симуляцию для различных наборов данных, содержащихся в кадре данных 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)
}