[R] reshape matrices
Marc Schwartz
marc_schwartz at comcast.net
Tue Jul 1 17:48:44 CEST 2008
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
More information about the R-help
mailing list