Re: [R] reshape matrices

From: Marc Schwartz <marc_schwartz_at_comcast.net>
Date: Tue, 01 Jul 2008 10:48:44 -0500

on 07/01/2008 04:58 AM Francisco Javier Santos Alamillos wrote:
> Hello everyone,
>
> I need reshape an array. For example, if we have next array:
>

>> a <- c(1,2,3,4,5,6,7,8,9,10,11,12)
>> dim(a) <- c(2,2,3)
>> a

> , , 1
>
> [,1] [,2]
> [1,] 1 3
> [2,] 2 4
>
> , , 2
>
> [,1] [,2]
> [1,] 5 7
> [2,] 6 8
>
> , , 3
>
> [,1] [,2]
> [1,] 9 11
> [2,] 10 12
>
> I need to get next matrices:
>
> 1 2 3 4
> 5 6 7 8
> 9 10 11 12
>
> 1 3 2 4
> 5 7 6 8
> 9 11 10 12
>
>
> It exist any function that can be able to do it?
>
> Thanks and sorry for my english.

Keep in mind, as you seem to recognize, that a matrix and an array, is a vector with a dim attribute.

Thus, to reshape an array or matrix, you need to alter the dim attribute, perhaps with a transpose for ordering purposes. There is more than one way to do this, but two would be:

 > t(matrix(a, 4, 3))

      [,1] [,2] [,3] [,4]

[1,]    1    2    3    4
[2,]    5    6    7    8
[3,]    9   10   11   12

 > matrix(a, 3, 4, byrow = TRUE)
      [,1] [,2] [,3] [,4]
[1,]    1    2    3    4

[2,] 5 6 7 8
[3,] 9 10 11 12

HTH, Marc Schwartz



R-help_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. Received on Tue 01 Jul 2008 - 15:52:21 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Tue 01 Jul 2008 - 16:31:09 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive