[R] Splicing factors without losing levels
Titus von der Malsburg
malsburg at gmail.com
Tue Jun 9 11:12:18 CEST 2009
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
More information about the R-help
mailing list