

I am trying to compare two sorted vectors, all elements in both vectors are not duplicated. Ex.
a = c[5, 10, 13, 19, 23]
b = c[1, 4, 7, 9, 15]
For each element in a, i need find the max element in b which is smaller than it, so the short answer will look like [4, 9, 9, 15, 15].
I dont want to use any loop since my real project contains element in millions. Is there any way to speed up my operation? Many Thanks.


Hi Bruclee,
?rle may help.
a < c(5, 10, 13, 19, 23)
b < c(1, 4, 7, 9, 15)
ab < data.frame(value = c(a,b), type=c(rep(0,length(a)),rep(1,length(b))))
ab < ab[order(ab$value),]
ab$v2 < cumsum(ab$type)
ab$matched < rep(ab$value[ab$type==1],rle(ab$v2)$lengths)
(result < ab[ab$type==0,c("value","matched")])
The code should work.
Regards.


Very Nice! Thanks a lot!
Btw, I think "match" function should also do the work for the last two steps. :)


try this:
> a < c(5, 10, 13, 19, 23)
>
> b < c(1, 4, 7, 9, 15)
> # use outer for comparison
> z < outer(a, b, ">")
> # use rowSums to get the indices (may have to check for zero)
> b[rowSums(z)]
[1] 4 9 9 15 15
>
On Wed, Oct 20, 2010 at 10:41 PM, bruclee < [hidden email]> wrote:
>
> I am trying to compare two sorted vectors, all elements in both vectors are
> not duplicated. Ex.
> a = c[5, 10, 13, 19, 23]
> b = c[1, 4, 7, 9, 15]
> For each element in a, i need find the max element in b which is smaller
> than it, so the short answer will look like [4, 9, 9, 15, 15].
> I dont want to use any loop since my real project contains element in
> millions. Is there any way to speed up my operation? Many Thanks.
> 
> View this message in context: http://r.789695.n4.nabble.com/HelpUsingvectorizationmethodforvectorscomparisiontp3004952p3004952.html> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> [hidden email] mailing list
> https://stat.ethz.ch/mailman/listinfo/rhelp> PLEASE do read the posting guide http://www.Rproject.org/postingguide.html> and provide commented, minimal, selfcontained, reproducible code.
>

Jim Holtman
Cincinnati, OH
+1 513 646 9390
What is the problem that you are trying to solve?
______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/rhelpPLEASE do read the posting guide http://www.Rproject.org/postingguide.htmland provide commented, minimal, selfcontained, reproducible code.

