从一个向量a中,我正在寻找一个函数(快速计算),它返回一个向量,它的数字范围在1和向量a中的级数之间,并指示哪些值是相等的。
我知道如何使用for循环来做到这一点,但它运行起来有点慢。
a=vector(11,14,11,22,14,22)
levels(as.factor(a))==3解决方案
b=vector(1,2,1,3,2,3)这意味着在位置1和3(其中是b中的数字1),a中的值是相等的。在位置2和5(其中是b中的数字2),a中的值是相等的。等等。
谢谢
发布于 2013-03-27 23:34:03
您可以在因子上使用as.numeric()来获得以下结果:
a <- c(11,14,11,22,14,22)
as.numeric(factor(a))
# [1] 1 2 1 3 2 3发布于 2013-03-27 23:59:10
下面是一个快速实现的函数:
numberfun <- function(x){y <- unique(x)
match(x,y)}
a <- c(11,14,11,22,14,22)
numberfun(a)
#[1] 1 2 1 3 2 3
a <- c(99,99,22,22,44,22,99)
numberfun(a)
#[1] 1 1 2 2 3 2 1https://stackoverflow.com/questions/15662781
复制相似问题