重新缩放矢量R.

Gle*_*len 4 r vector

假设我有一个整数向量,例如:

> x
[1]  1  1  1  4  4 13 13 14
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种有效的方法在R中将向量重新调整为整数1到唯一元素数的最大值.因此得到的矢量将是:

1 1 1 2 2 3 3 4
Run Code Online (Sandbox Code Playgroud)

看起来像一个简单的问题,但我找不到一个有效的方法来做到这一点.实际上,这个向量很大(大约500).

Jul*_*ora 7

试试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
Run Code Online (Sandbox Code Playgroud)


Jan*_*ary 6

尝试以下命令,假设这v是您的向量

rank( v )
Run Code Online (Sandbox Code Playgroud)

?rank有关更多信息,请参阅

嗯,这确实给出了另一个结果,但是作为排名是正确的,这是我认为你想要实现的.要获得您的首选结果,请执行

as.integer( factor( v ) )
Run Code Online (Sandbox Code Playgroud)