[R] Merge two vectors into one

Greg Snow 538280 at gmail.com
Mon Mar 24 19:55:42 CET 2014


Just to satisfy my curiosity:

> library(microbenchmark)
>
> a <- 1:10
> b <- 101:110
>
> microbenchmark(
+ m1=as.vector( rbind(a,b) ),
+ m2=c( rbind(a,b) ),
+ m3=as.vector( matrix(c(a,b), nrow=2, byrow=TRUE) ),
+ m4={x <- integer(length(a)*2); x[c(TRUE,FALSE)] <- a;
x[c(FALSE,TRUE)] <- b; x},
+ m5={x <- integer(length(a)*2); x[seq.int(1, length.out=length(a), by=2)] <- a;
+ x[seq.int(2,length.out=length(b), by=2)] <- b; x},
+ m6=c(a,b)[order( c(seq_along(a),seq_along(b)))]
+ )
Unit: microseconds
 expr    min      lq median      uq     max neval
   m1  2.463  3.0795  3.285  4.1055   7.390   100
   m2  1.642  2.0530  2.464  2.8740  10.675   100
   m3  2.874  3.6955  4.516  4.9270  31.200   100
   m4  6.979  7.5950  8.211  9.4420  28.737   100
   m5  8.211  9.4420 10.263 11.0850 101.400   100
   m6 10.674 11.9050 12.317 13.1380  43.927   100


Of course the timings will change (and could possibly change order)
with different a and b vectors.  And there are other
advantages/disadvantages to each method beyond the timings.  But I
found this interesting.

On Mon, Mar 24, 2014 at 1:19 AM, David Winsemius <dwinsemius at comcast.net> wrote:
>
> On Mar 22, 2014, at 3:22 PM, Tham Tran wrote:
>
>> Dear R users,
>>
>> Given two vectors x and y
>> a=1 2 3
>> b=4 5 6
>>
>> i want to combine them into a single vector z as 1 4 2 5 3 6
>>
>> Thanks for your help
>
> Searching Stackoverflow for [r] interleave produced this idea fron @Arun, which I think is superior to the c(matrix-byrow) or as.vector(matrix-byrow) strategies because it generalizes to unequal length vectors:
>
>> c(a,b)[ order( c(seq_along(a), seq_along(b)))]
> [1] 1 4 2 5 3 6
>
> --
>
> David Winsemius
> Alameda, CA, USA
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



-- 
Gregory (Greg) L. Snow Ph.D.
538280 at gmail.com




More information about the R-help mailing list