假設我有整數如一個矢量:重縮放矢量R
> x
[1] 1 1 1 4 4 13 13 14
我尋找中的R的有效方式的矢量爲整數1重新縮放爲元素的唯一編號的最大值。因此得到的載體將是:
1 1 1 2 2 3 3 4
似乎是一個簡單的問題,但我無法找到一個有效的方式來做到這一點。在實踐中,這個向量很大(大約500)。
假設我有整數如一個矢量:重縮放矢量R
> x
[1] 1 1 1 4 4 13 13 14
我尋找中的R的有效方式的矢量爲整數1重新縮放爲元素的唯一編號的最大值。因此得到的載體將是:
1 1 1 2 2 3 3 4
似乎是一個簡單的問題,但我無法找到一個有效的方式來做到這一點。在實踐中,這個向量很大(大約500)。
嘗試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
+1用於基準化替代方法 –