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

R语言如何通过循环模拟筛选符合间隔规则的元素并计算总和

实现思路

你生成的total是全局升序排列的,所以相邻组的差值要求可以简化为:下一组的首个元素 > 上一组的最后一个元素 + 1,只要满足这个条件,两组所有元素的差值都会大于1。我们可以通过循环迭代查找符合要求的分组,直到剩余元素不足5个为止。

完整实现代码

# 生成原始数据
set.seed(50) 
a = sort(runif(10, 0, 1)) 
b = sort(runif(30, 1, 4)) 
total = c(a, b)

# 初始化变量
n <- length(total)
selected <- c()
current_start <- 1

# 循环查找符合规则的分组
while (current_start + 4 <= n) {
  # 取当前组的5个元素索引
  current_group_idx <- current_start:(current_start + 4)
  selected <- c(selected, current_group_idx)
  # 获取当前组的最大值
  last_val <- total[current_start + 4]
  # 查找下一组的起始位置:第一个大于last_val + 1的元素索引
  next_start <- which(total > last_val + 1)[1]
  # 无符合条件的元素则退出循环
  if (is.na(next_start)) break
  current_start <- next_start
}

# 计算选中元素的总和
result_sum <- sum(total[selected])
print(result_sum)

# 可打印选中的索引验证匹配示例
print(selected)

结果验证

运行代码后打印的选中索引为1 2 3 4 5 11 12 13 14 15 27 28 29 30 31,和你给出的示例完全匹配,最终总和计算结果为20.66891。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:27:04