时如何连接两个有序向量
以下两种方法(1)不起作用(第一种返回整数向量,第二种返回因子向量):
o1 <- ordered(c('a', 'b'), levels = c('c', 'b', 'a'))
o2 <- ordered(c('c'), levels = c('c', 'b', 'a'))
c(o1, o2)
#> [1] 3 2 1
unlist(list(o1, o2))
#> [1] a b c
#> Levels: c b a
答案 0 :(得分:1)
当他们有相同的因素和排序时,
ordered(c(o1, o2), levels = 1:nlevels(o1), labels = levels(o1))
#> [1] a b c
#> Levels: c < b < a
当他们有非重叠因素时,最好明确定义您希望新订单的内容:
p1 <- ordered(c('a', 'b'), levels = c('b', 'a'))
p2 <- ordered(c('c'))
new_order <- as.list(c(levels(p2), levels(p1)))
names(new_order) = new_order
levels(p1) <- new_order
levels(p2) <- new_order
ordered(c(p1, p2), levels = 1:length(new_order), labels = new_order)
#> [1] a b c
#> Levels: c < b < a
或者,如果你喜欢危险的编码,你可以让rbind
使用它的黑暗魔法:
d = rbind(data.frame(a = p1), data.frame(a = p2))
d$a
#> [1] a b c
#> Levels: b < a < c
(请注意,您失去了对因子排序的控制权。)