On Fri, Feb 10, 2012 at 3:02 AM, xiddw <xid...@gmail.com> wrote: > 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 > >
Try this: h <- matrix(1:64, 8) # input k <- kronecker(matrix(1:16, 4, byrow = TRUE), matrix(1, 2, 2)) g <- lapply(split(h, k), matrix, nr = 2) -- Statistics & Software Consulting GKX Group, GKX Associates Inc. tel: 1-877-GKX-GROUP email: ggrothendieck at gmail.com ______________________________________________ R-help@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.