Параллельные вычисления в R, суммирование переменных

Я совершенно новичок в параллельных вычислениях в R, и я хотел бы (очень упрощенная версия исходной задачи) добавить новое значение в X, Y и Z следующим образом:

library(foreach)
library(doParallel)

X <- 0
Y <- 0
Z <- 0

cores <- detectCores()
cl <- makeCluster(cores[1] - 1) #not to overload your computer
registerDoParallel(cl)
A <- foreach(i = 1:3, .combine = data.frame) %dopar% {
  X = X + i
  Y = Y + i + 2
  Z = Z + i + 3
}
stopCluster(cl)

Я надеялся получить A = [6 12 15] (6=1+2+3; 12=(1+2)+(2+2)+(3+2); 15=(1+3)+(2+3)+(3+3)), но к сожалению я получаю этот результат A = [4 5 6],

Я попытался решить эту проблему с помощью документации foreach, и я думаю, что должен сам сделать функцию для.combine, чтобы получить желаемый результат, но я не понимаю, как...

Кто-нибудь может мне помочь?

Заранее спасибо!

1 ответ

Просто нашел это сам! Следующий код возвращает желаемый результат

библиотека (Еогеасп)

библиотека (doParallel)

X <- 0

Y = 0

Z = 0

Сердечники = detectCores ()

cl <- makeCluster (cores [1] -1) # не перегружать компьютер

registerDoParallel (сл)

A = foreach (i = 1: 3,.combine = '+')% допар% {

X = X + I

Y = Y + i + 2

Z = Z + i + 3

Возвращение (с (Х, Y, Z))

}

stopCluster (сл)

Другие вопросы по тегам