例如:
x <- c('A', 'A', 'B', 'C', 'C', 'C')
x <- as.factor(x)
print(summary(x))
将给出结果:
A B C
2 1 3
现在,如果我有一个命名向量:
nv <- c(A=2, B=1, C=3)
如何在不关心订单的情况下轻松保留上述示例中的x
?
提前致谢。
答案 0 :(得分:5)
根据您的具体示例,您可以使用rep
,但请注意:这不是一般解决方案。事实上,我认为通用解决方案是不可能的,因为summary
会丢弃有关原始向量的信息。
x <- factor(c('A', 'A', 'B', 'C', 'C', 'C'))
xs <- summary(x)
rep(names(xs), times=xs)
[1] "A" "A" "B" "C" "C" "C"
这不是一般性的原因是summary
实际上只是给出一个列联表,从而丢失了关于元素位置的信息。例如,如果我使用你的向量并在结尾追加几个A
个字符,看看会发生什么:
x <- factor(c('A', 'A', 'B', 'C', 'C', 'C', 'A', 'A'))
xs <- summary(x)
rep(names(xs), times=xs)
[1] "A" "A" "A" "A" "B" "C" "C" "C"
(您现在有一个带有所有正确元素的排序向量,但顺序不正确。)