[R] multiple match question

Peter Dalgaard p.dalgaard at biostat.ku.dk
Wed Sep 29 18:37:05 CEST 2004


"Marc Mamin" <M.Mamin at intershop.de> writes:

> Hello,
> 
>  I'm looking for a fast way to retrieve the position of elements  from a vector which match element in another vector.
> 
> Example
> 
> va<-c('a','e')
> vb<-c('a','b','c','d','e','f','e')
> 
> f(va,vb) should return c(1,5,7)
> 
> I have 2 different cases: 
> 
> I) my vector vb contains only distinct values
> II) my vector vb may contains the same values more than once.
> 
> for I) I use following which is fast enough:
> 
> 	as.vector(na.omit(unlist(lapply(va,match,vb))))

Wouldn't know about speed, but

  which(apply(outer(va,vb,"=="),2,any))
  which(sapply(vb,"%in%",va))

both seem to do the trick.

-- 
   O__  ---- Peter Dalgaard             Blegdamsvej 3  
  c/ /'_ --- Dept. of Biostatistics     2200 Cph. N   
 (*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)             FAX: (+45) 35327907




More information about the R-help mailing list