Assuming your matrix is: mm <- matrix(runif(6*6),6,6)
And your blocks are defined by integers or factors: cfact <- c(1,1,1,2,3,3) rfact <- c(1,1,1,2,2,3) Then the following should do the trick: matrix(tapply(mm, outer(rfact,cfact,paste), mean), length(unique(rfact))) The 'outer' calculates a joint factor for each element of the matrix; the 'tapply' treats the matrix as a vector, grouping by factor and calculating means; the 'matrix' rearranges them as a matrix corresponding to the original block structure. Is that what you had in mind? -s On Mon, Feb 16, 2009 at 12:43 PM, Titus von der Malsburg <malsb...@gmail.com > wrote: > > Hi list! I have a large matrix which I'd like to partition into blocks > and for each block I'd like to compute the mean. Following a example > where each letter marks a block of the partition: > > a a a d g g > a a a d g g > a a a d g g > b b b e h h > b b b e h h > c c c f i i > > I'm only interested in the resulting matrix of means. How can this be > done efficiently? > > Thanks! Titus > > ______________________________________________ > 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. > [[alternative HTML version deleted]] ______________________________________________ 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.