[R] Efficient way to substract all entries in two vectors from each other

Ido M. Tamir tamir at imp.univie.ac.at
Mon Jan 7 20:35:02 CET 2008


Johannes Graumann wrote:

> Hi all,
> 
> I'm to inexperienced to come up with the matrix solution elusively
> appearing on the horizon for the following problem and would appreciate if
> you could give me a nudge ...
> I have two vectors a, and b and need to find the closest match for each
> value of a in b.
> How to do that efficiently?

I am not sure if I understood your problem correctly, 
but maybe this is of help.
However its not memory efficient.

> a <- c(3,10,50,100)
> b <- c(7,8,300)
> b[apply(abs(outer(a,b,"-")),1,which.min)]
[1] 7 8 8 8

In Biobase there is the matchpt function doing this
efficiently.

best wishes,
ido




More information about the R-help mailing list