[R] summing subsets of rows matrices

Dimitris Rizopoulos dimitris.rizopoulos at med.kuleuven.ac.be
Fri Jan 14 11:01:56 CET 2005


Hi Stephen,

you could try something like this:

mat <- matrix(rnorm(4460*3500), 4460, 3500)
###############
d <- dim(mat)
bin <- 10
system.time(out <- lapply(split(mat,rep(seq(1, d[1]/bin), each=bin)), 
function(x){dim(x) <- c(bin, d[2]); colSums(x)}), gcFirst=TRUE)
out <- matrix(unlist(out, use.names=FALSE), ncol=d[2], byrow=TRUE)

I hope it helps.

Best,
Dimitris

----
Dimitris Rizopoulos
Ph.D. Student
Biostatistical Centre
School of Public Health
Catholic University of Leuven

Address: Kapucijnenvoer 35, Leuven, Belgium
Tel: +32/16/336899
Fax: +32/16/337015
Web: http://www.med.kuleuven.ac.be/biostat
     http://www.student.kuleuven.ac.be/~m0390867/dimitris.htm


----- Original Message ----- 
From: "Stephen Nyangoma" <s.o.nyangoma at rug.nl>
To: <r-help at stat.math.ethz.ch>
Sent: Friday, January 14, 2005 10:18 AM
Subject: [R] summing subsets of rows matrices


>I have a large data matrix (4460X3500) and I want to sum row subsets 
>in groups of 10 (bin). Is there an efficient way to do this in R 
>without using loops. Looping takes forever to perform this task!
>
> For example suppose we have the matrix
>> matrix(1:12,6,2)
>     [,1] [,2]
> [1,]    1    7
> [2,]    2    8
> [3,]    3    9
> [4,]    4   10
> [5,]    5   11
> [6,]    6   12
>
> my problem is to sdum for example:
> 1. the first and second row
> 2. the third and fourth
> and
> 3. the fifth and the sixth.
>
> To obtain
>
>    [,1] [,2]
> [1,]    3   15
> [2,]    7   19
> [3,]   11   23
>
>
>
> Thank you.
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! 
> http://www.R-project.org/posting-guide.html
>




More information about the R-help mailing list