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
______________________________________________
[email protected] 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.