假设我有一个整数向量,例如:
> x
[1] 1 1 1 4 4 13 13 14
我正在 R 中寻找一种有效的方法,将向量重新调整为整数 1 到元素的唯一数量的最大值。因此得到的向量将是:
1 1 1 2 2 3 3 4
似乎是一个简单的问题,但我很难找到有效的方法来做到这一点。实际上这个向量很大(大约 500)。
Try match(x, sort(unique(x)))
:
x <- sample(1:50, 1e6, replace = TRUE)
benchmark(as.integer(factor(x)), match(x, sort(unique(x))),
replications = 20, columns = c("test", "elapsed", "relative"))
# test elapsed relative
# 1 as.integer(factor(x)) 18.44 10.36
# 2 match(x, sort(unique(x))) 1.78 1.00
identical(as.integer(factor(x)), match(x, sort(unique(x))))
# [1] TRUE
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)