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

R语言如何去除向量连续重复值,仅保留各游程对应的唯一取值

R语言去除向量连续重复值的实现方法

最优方案:使用基础库自带rle()函数

这是最便捷也最易读的实现方式,无需安装任何第三方包,一行代码即可得到目标结果。

你的示例向量如下:

v <- c(3,3,3,3,3,1,1,1,1,1,1,
3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,2,2,2,2,2,2,2,3,3,
3,3,3,3,3,3,3,3,3,3,3)

直接调用rle()提取返回结果中的values字段即可:

exp_output <- rle(v)$values

输出验证:

print(exp_output)
# [1] 3 1 3 2 3

原理说明

rle()是R内置的游程编码函数,专门用于统计向量中连续相同值的分布,返回结果包含两个字段:

  • lengths:每组连续相同值的元素个数
  • values:每组连续相同值的取值
    直接提取values就刚好满足去连续重复、仅保留每组唯一值的需求。

替代实现方案

如果你更习惯用逻辑判断的写法,也可以用diff()函数实现,逻辑等价但可读性稍弱:

exp_output <- v[c(TRUE, diff(v) != 0)]

逻辑为:保留第一个元素,以及所有和前一个元素取值不同的元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:48:04