Hi list!

An operation that I often need is splicing two vectors:

  > splice(1:3, 4:6)
  [1] 1 4 2 5 3 6

For numeric vectors I use this hack:

  splice <- function(x, y) {
    xy <- cbind(x, y)
    xy <- t(xy)
    dim(xy) <- length(x) * 2
    return(xy)
  }

So far, so good (?).  But I also need splicing for factors and I tried
this:

  splice <- function(x, y) {
    xy <- cbind(x, y)
    xy <- t(xy)
    dim(xy) <- length(x) * 2
    if (is.factor(x) && is.factor(y)) {
      xy <- as.factor(xy)
      levels(xy) <- levels(x)
    }
    return(xy)
  }

This, however, doesn't work because the level name to integer mapping
gets mixed up when copying the levels from x to xy.

My questions:

 1.) How can this be fixed?
 2.) What's the best way to do splicing of vectors and factors in R?
 (I couldn't find a prefdefined function for this although it seems to be
 such a basic and useful operation.)

Thanks!!

 Titus

______________________________________________
R-help@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.

Reply via email to