Ответ 1
Спасибо за ваши отзывы. Я просмотрел parallel
после того, как я разместил этот вопрос.
Наконец, после нескольких попыток, я получил его. Я добавил код ниже, если он полезен другим
library(foreach)
library(doParallel)
#setup parallel backend to use many processors
cores=detectCores()
cl <- makeCluster(cores[1]-1) #not to overload your computer
registerDoParallel(cl)
finalMatrix <- foreach(i=1:150000, .combine=cbind) %dopar% {
tempMatrix = functionThatDoesSomething() #calling a function
#do other things if you want
tempMatrix #Equivalent to finalMatrix = cbind(finalMatrix, tempMatrix)
}
#stop cluster
stopCluster(cl)
Примечание. Я должен добавить примечание о том, что если пользователь выделяет слишком много процессов, пользователь может получить эту ошибку: Error in serialize(data, node$con) : error writing to connection
Примечание. Если .combine
в операторе foreach
rbind
, то конечный возвращаемый объект был бы создан путем добавления вывода каждого цикла по ряду.
Надеюсь, это полезно для людей, которые вначале пытаются выполнить параллельную обработку в R, как я.
Литература: http://www.r-bloggers.com/parallel-r-loops-for-windows-and-linux/ https://beckmw.wordpress.com/2014/01/21/a-brief-foray-into-parallel-processing-with-r/