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

如何自动获取R向量中首次连续重复值的起始索引?

解决向量末尾重复值首次出现索引的问题

针对你提到的递增向量(一旦开始重复就持续到末尾,且至少最后两个值重复),可以用以下几种简单的R语言方法自动获取重复值首次出现的索引:

首先定义示例向量:

a <- c(14,26,38,64,96,127,152,152,152,152,152,152)
b <- c(4,7,9,13,13,13,13,13,13,13,13,13,13,13)
c <- c(62,297,297,297,297,297,297,297,297,297,297,297)

方法一:直接定位末尾重复值的首次出现

因为向量最后会持续重复,所以重复值就是向量的最后一个元素,直接找到该元素第一次出现的索引即可:

find_first_repeat <- function(vec) {
  repeat_val <- tail(vec, 1)
  which(vec == repeat_val)[1]
}

# 批量处理多个向量
sapply(list(a, b, c), find_first_repeat)
# 输出结果:7 4 2

方法二:利用差值判断重复起始点

通过计算相邻元素的差值,找到第一个差值为0的位置,加1就是重复值首次出现的索引(差值为0意味着当前元素和前一个相等):

find_first_repeat_v2 <- function(vec) {
  diffs <- diff(vec)
  which(diffs == 0)[1] + 1
}

sapply(list(a, b, c), find_first_repeat_v2)
# 输出结果:7 4 2

两种方法都能满足需求,第一种逻辑更直观,第二种则从向量递增的特性出发推导,根据个人习惯选择即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 18:52:33