R语言which.min()函数如何返回多个最小值索引
获取向量中全部最小值对应索引的实现方法
which.min()是R的内置定位函数,其固定逻辑为仅返回向量中首次出现的最小值的位置索引,不支持通过参数调整为返回所有匹配项。
你可以通过基础逻辑组合实现需求,核心思路是先提取向量的最小值,再匹配所有等于该值的元素位置:
- 用
min()计算目标向量的最小值 - 用
which()定位所有等于该最小值的元素索引
代码示例
针对你给出的测试向量:
tmp <- c(1,2,1) which(tmp == min(tmp)) # 控制台输出:[1] 1 3
特殊场景处理
如果向量中包含缺失值NA,需要在min()中添加na.rm = TRUE参数,避免计算结果被NA干扰:
# 带NA的测试向量 tmp_with_na <- c(1, NA, 2, 1) which(tmp_with_na == min(tmp_with_na, na.rm = TRUE)) # 控制台输出:[1] 1 4
易错提示
直接运行tmp == min(tmp)仅会返回和原向量等长的逻辑向量,用于标记哪些位置的元素匹配最小值,不会直接输出索引值,必须嵌套which()函数完成索引转换。
内容的提问来源于stack exchange,提问作者M.C. Park
相关产品推荐
相关产品推荐

