[R] Split matrix into square submatices
xiddw
xiDDdw at gmail.com
Fri Feb 10 09:02:25 CET 2012
Hi everybody,
I'm looking for an optimal way to split a big matrix (e.g. ncol = 8,
nrow=8) into small square submatrices (e.g. ncol=2, nrow=2)
For example
If I have
> h
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 1 9 17 25 33 41 49 57
[2,] 2 10 18 26 34 42 50 58
[3,] 3 11 19 27 35 43 51 59
[4,] 4 12 20 28 36 44 52 60
[5,] 5 13 21 29 37 45 53 61
[6,] 6 14 22 30 38 46 54 62
[7,] 7 15 23 31 39 47 55 63
[8,] 8 16 24 32 40 48 56 64
and I want to split matriz h into 16 small submatrices:
> g[1]
[,1] [,2]
[1,] 1 9
[2,] 2 10
> g[2]
[,1] [,2]
[1,] 17 25
[2,] 18 26
...
> g[4]
[,1] [,2]
[1,] 49 57
[2,] 50 58
...
> g[16]
[,1] [,2]
[1,] 55 63
[2,] 56 64
Always the big matrix would be a square matrix and also would have a nrow
and ncol in order of a power of two, so it always could be splitted in at
least halves.
Until now, I'm able to split a matrix but keeping the number of original
matrix columns.
I mean, if I want to split into 16 submatrices, using the following command
what I get its 4 lists:
But I haven't found a way to split resultant lists in order to get 4
matrices for each list.
> g <- split(as.data.frame(h), (1:4))
> g
$`1`
V1 V2 V3 V4 V5 V6 V7 V8
1 1 9 17 25 33 41 49 57
5 5 13 21 29 37 45 53 61
$`2`
V1 V2 V3 V4 V5 V6 V7 V8
2 2 10 18 26 34 42 50 58
6 6 14 22 30 38 46 54 62
$`3`
V1 V2 V3 V4 V5 V6 V7 V8
3 3 11 19 27 35 43 51 59
7 7 15 23 31 39 47 55 63
$`4`
V1 V2 V3 V4 V5 V6 V7 V8
4 4 12 20 28 36 44 52 60
8 8 16 24 32 40 48 56 64
I would appreciate any hint. Thanks.
--
View this message in context: http://r.789695.n4.nabble.com/Split-matrix-into-square-submatices-tp4375563p4375563.html
Sent from the R help mailing list archive at Nabble.com.
More information about the R-help
mailing list