
It may be possible to give a solution without a single for loop.

set.seed(1)
v<-sample(1:10,size=1e6,replace=TRUE)
p<-2:4


countinstance<-function(v,p) {
    res<-outer(v,p,FUN="==");
    apply(res,2,sum)

}

> system.time(replicate(50,countinstance(v,p)))/50
   user  system elapsed 
 0.2146  0.0248  0.2403 


It is ~50% slower than the "f2" solution given previously ... but it also gives you a 2D of where the matches are.
These are stored in the "res" variable; use with care with very big datasets.

I wonder whether it is possible to reduce the memory footprint with bit level operations ...


Christos Argyropoulos

 		 	   		  
_________________________________________________________________
Hotmail: Free, trusted and rich email service.

	[[alternative HTML version deleted]]

