You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不使用which()、match()、%in%获取向量最大值的唯一索引?

修正R代码获取向量最大值索引(不使用which()/match()/%in%)

原代码的问题在于,每次更新最大值后立刻打印当前索引,导致所有阶段性最大值的索引都被输出。要实现仅获取最终最大值的索引,可采用以下两种修正方案:

方案一:分两次遍历(先找最大值,再找索引)

vect_1 <- c(2, 3, 1, 4, 5, 10, 7, 6, 9, 8)

n <- length(vect_1)
max_value <- vect_1[1]

# 第一次遍历:确定向量中的最大值
for (i in 1:n) {
  if (vect_1[i] > max_value) {
    max_value <- vect_1[i]
  }
}

# 第二次遍历:找到最大值对应的索引
max_index <- 1
for (i in 1:n) {
  if (vect_1[i] == max_value) {
    max_index <- i
  }
}

print(max_index)

方案二:单次遍历同时跟踪最大值与索引(更高效)

vect_1 <- c(2, 3, 1, 4, 5, 10, 7, 6, 9, 8)

n <- length(vect_1)
max_value <- vect_1[1]
max_index <- 1

for (i in 1:n) {
  # 发现更大值时,同步更新最大值和对应索引
  if (vect_1[i] > max_value) {
    max_value <- vect_1[i]
    max_index <- i
  }
}

print(max_index)

说明

方案二只需一次遍历即可完成,效率更高。循环过程中,仅当遇到比当前最大值更大的元素时,才更新最大值和对应的索引。循环结束后,max_index就是目标最大值的索引,执行print(max_index)会输出[1] 6,符合预期需求。

内容的提问来源于stack exchange,提问作者user20253433

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 08:15:38