Search code examples
rmatlabdoparallel

parallel computing in R


I am familiar with Matlab, but recently started to use R. I encounterd a problem when using parallel computing in R.

I want to use a matrix or a 3-d array as an output after parellel computing. In Matlab, an example what I want to do is as follows.

X=zeros(10,5,100);
Y=zeros(100,2);
parfor i=1:100;
 X(:,:,i) = randn(10,5);
 Y(i,:) = randn(1,2);
end

However, as long as I investigated, foreach in R seem return only vectors(list?) and a matrix or an array seem not allowed. I'm wondering how I need to wright a code to implement what Matlab does.


Solution

  • Here is my suggested solution based on the Matlab code in the question.

    #install.packages("foreach")
    #install.packages("doParallel")
    library(foreach)
    library(doParallel)
    X <- array(c(rep(0,10), rep(0,5), rep(0,100)),dim = c(10,5,100))
    Y <- array(c(rep(0,100), rep(0,2)),dim = c(100,2))
    X=foreach(i=1:100) %dopar% {
      X[ , , i]=   array(c( rnorm(10), rnorm(5)),dim = c(10,5))
      X
    }
    Y=foreach(i=1:100) %dopar% {
      Y[ i , ]=   array(c( rnorm(1), rnorm(2)),dim = c(1,2))
      Y
    }