[R] Avoiding for loops

Noah Silverman noah at smartmediacorp.com
Mon Nov 2 11:29:40 CET 2009


Hi,

I'm trying to normalize some data.
My data is organized by groups.  I want to normalize PER GROUP as 
opposed to over the entire data set.

The current double loop that I'm using takes almost an hour to run on 
about 30,000 rows of data in 2,500 groups.

I'm currently doing this:

-------------------------------------
for(group in unique(data$group)){
     sum_V1 <- sum(data$V1[data$group == group])

     for(subject in data$subject[data$group == group]){
         data$V1_norm[(data$group == group & data$subject == subject)] 
<- data$V1[(data$group == group & data$subject == subject)] / sum_V1
     }
}
-------------------------------------

Can anyone point me to a faster way to do this in R.

Thanks!

-N



More information about the R-help mailing list