# R reshape matrix by rows

I have a matrix with size 18000 x 54. I would like to reshape it as a matrix with size 54000 x 18, in which each row of my initial matrix becomes a matrix which has 3 rows.

Let’s take an example. I have a matrix as follow:

``````a = matrix(1:18, nrow = 2, ncol = 9, byrow = T)
a
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
1    2    3    4    5    6    7    8    9
10   11   12   13   14   15   16   17   18
``````

I would like to reshape this matrix so that it becomes:

``````[,1]  [,2]  [,3]
1      4    7
2      5    8
3      9   10
10    13   16
11    14   17
12    15   18
``````

I tried two following ways, but they do not work. The first is as follows:

``````dim(a) = c(6,3)
``````

The second one is to create a function and then apply to each row:

``````reshapeX = function(x){
dim(x) = c(3,as.integer(length(x)/3))
return(as.matrix(x))
}
rbind(apply(a, 1, reshapeX))
``````

But it does not work neither. Can someone help please?

R reshape matrix by rows