[R] efficient filtering of matrices

Uwe Ligges ligges at statistik.uni-dortmund.de
Thu May 5 20:18:19 CEST 2005


sms13+ at pitt.edu wrote:

> I was wondering if someone can tell me the best way to search through a 
> matrix and choose certain rows (based on certain conditions) to put into 
> a separate matrix.
> What I have tried so far is very slow for a large dataset I'm working 
> with. e.g., I have this piece of code to create a new matrix (newmat) 
> based on my filtering conditions.  Do I need to do this kind of thing 
> where I keep rbinding?
> 
> newmat<-rep(NA,12)
> for (i in 1:length(origmat[,1])
> {
>     if (  is.na(origmat[i,10])  |  (!is.na(origmat[i,10]) & 
> (origmat[i,2] <= origmat[i,10]) )   )
>         newmat<-rbind(newmat, origmat[i,])
> }


What about vectorizing the stuff?

   index <- is.na(origmat[ ,10]) |
     (!is.na(origmat[ ,10]) &
       (origmat[ ,2] <= origmat[ ,10]))
   newmat <- origmat[index,]

Uwe Ligges


> 
> Thanks,
> Steven
> 
> ______________________________________________
> 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