r - 计算向量中不同值的数量

标签 r performance count

我有一个标量值的向量,我想得到它:“有多少不同的值”。

例如在 group <- c(1,2,3,1,2,3,4,6)唯一值是 1,2,3,4,6所以我想得到 5 .

我想出了:

length(unique(group))

但我不确定这是最有效的方法。没有更好的方法来做到这一点吗?

注:我的情况比示例更复杂,由大约 1000 个数字组成,最多有 25 个不同的值。

最佳答案

这里有一些想法,所有点都指向您的解决方案已经非常快了。 length(unique(x))这也是我会使用的:

x <- sample.int(25, 1000, TRUE)

library(microbenchmark)
microbenchmark(length(unique(x)),
               nlevels(factor(x)),
               length(table(x)),
               sum(!duplicated(x)))
# Unit: microseconds
#                 expr     min       lq   median       uq      max neval
#    length(unique(x))  24.810  25.9005  27.1350  28.8605   48.854   100
#   nlevels(factor(x)) 367.646 371.6185 380.2025 411.8625 1347.343   100
#     length(table(x)) 505.035 511.3080 530.9490 575.0880 1685.454   100
#  sum(!duplicated(x))  24.030  25.7955  27.4275  30.0295   70.446   100

关于r - 计算向量中不同值的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18056465/

相关文章:

r - 如何从Rscript弹出图形窗口?

r - 从矩阵创建 bool 矩阵

R 嵌套 foreach %dopar% 外循环和 %do% 内循环

jquery - 多选择器与单选择器性能

MySQL - 如何根据 DATETIME 字段计算日期中的寄存器

sqlite - 为什么这个触发器不阻止在 sqlite 中插入行?

r - 优化全局最小值

android - 配置 WebRTC android 以获得最低延迟

java - 在 Java 中将日志写入 SSD 的最快方法是什么?

python - 计算在 Python 中分组的唯一值