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

R语言统计向量中长度≥2的连续数值序列个数的实现方法

R实现统计符合要求的连续序列个数

实现思路

我们要统计的是不可延长的、长度≥2的连续递增1序列的个数,核心思路如下:

  • 先计算向量相邻元素的差值,筛选出差值为1的位置
  • 用游程编码统计连续差值为1的段的数量,每一段对应一个符合要求的序列

完整代码

# 定义输入向量
vec <- c(28, 44, 45, 46, 47, 48, 61, 62, 70, 71, 82, 83, 104, 105, 111, 115, 125, 136, 137, 138, 146, 147, 158, 159, 160, 185, 186, 187, 188, 189, 190, 191, 192, 193, 209, 263, 264, 265, 266, 267, 268, 280, 283, 284, 308, 309, 318, 319, 324, 333, 334, 335, 347, 354)

# 计算相邻元素差值,判断是否为1
diff_logic <- diff(vec) == 1

# 游程编码统计连续为TRUE的段数,即为所求结果
result <- sum(rle(diff_logic)$values)

# 输出结果
print(result)

代码说明

  • diff(vec):返回向量相邻元素的差值,长度比原向量少1
  • diff(vec) == 1:得到逻辑向量,对应位置为TRUE表示该位置相邻元素差为1
  • rle():游程编码函数,返回两个属性:values是连续出现的值,lengths是对应连续出现的长度
  • sum(rle(diff_logic)$values):统计逻辑值为TRUE的个数,也就是连续差为1的段数,运行后得到输出为14,符合要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:48:01