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

R语言如何从向量列表中筛选1连续出现超3次的向量

你推测使用rle()的思路完全正确,可直接在筛选逻辑中加入游程长度的校验,甚至可以合并两个筛选条件一步得到结果,无需分两步执行:

完整筛选代码

result <- test_list[sapply(test_list, function(vec) {
  # 计算向量的连续游程
  rle_res <- rle(vec)
  # 判断是否存在值为1且连续长度超过3的游程
  any(rle_res$values == 1 & rle_res$lengths > 3)
})]

逻辑说明

  • rle()会返回向量中所有连续相同值段的取值(values)和对应连续长度(lengths)
  • 上述判断逻辑已经天然覆盖了「向量中存在值为1的元素」的第一个筛选条件,只要存在符合要求的连续1段就会被保留,最终结果仅包含vec1和vec3,符合预期。

如果你需要在已得到的filter_ones结果基础上叠加第二个条件,可使用以下代码:

final_result <- filter_ones[sapply(filter_ones, function(vec) {
  rle_res <- rle(vec)
  any(rle_res$values == 1 & rle_res$lengths > 3)
})]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:45:08