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

R语言如何循环实现数组连续子集筛选并统计迭代次数

R语言循环实现迭代筛选与计数

不需要重复编写冗余的单步操作代码,用while循环即可自动完成全流程迭代,自动统计迭代次数。

完整可运行代码

# 初始待处理矩阵
ar <- structure(c(0, 11, 17, 15, 22, 67, 73, 68, 31, 31, 28, 33, 34, 
32, 11, 0, 9, 12, 21, 67, 73, 67, 35, 30, 34, 67, 60, 36, 17, 
9, 0, 6, 19, 70, 74, 68, 36, 36, 36, 64, 66, 39, 15, 12, 6, 0, 
13, 64, 69, 66, 34, 37, 39, 77, 65, 45, 22, 21, 19, 13, 0, 59, 
60, 66, 38, 39, 39, 40, 43, 43, 67, 67, 70, 64, 59, 0, 10, 18, 
77, 75, 78, 93, 93, 85, 73, 73, 74, 69, 60, 10, 0, 15, 76, 74, 
80, 103, 101, 95, 68, 67, 68, 66, 66, 18, 15, 0, 59, 65, 73, 
90, 87, 82, 31, 35, 36, 34, 38, 77, 76, 59, 0, 8, 19, 24, 28, 
32, 31, 30, 36, 37, 39, 75, 74, 65, 8, 0, 12, 20, 22, 23, 28, 
34, 36, 39, 39, 78, 80, 73, 19, 12, 0, 6, 14, 18, 33, 67, 64, 
77, 40, 93, 103, 90, 24, 20, 6, 0, 2, 8, 34, 60, 66, 65, 43, 
93, 101, 87, 28, 22, 14, 2, 0, 6, 32, 36, 39, 45, 43, 85, 95, 
82, 32, 23, 18, 8, 6, 0), .Dim = c(14L, 14L))

# 初始化:当前处理矩阵设为初始矩阵,迭代计数器置0
current <- ar
iter_num <- 0

# 循环终止条件:当前矩阵行数为0(空集)
while (nrow(current) > 0) {
  iter_num <- iter_num + 1
  # 复现单步操作逻辑
  col_less25_count <- colSums(current < 25)
  target_col <- which.max(col_less25_count)
  current <- current[current[, target_col] > 25, , drop = FALSE]
}

# 打印结果
cat("总迭代次数:", iter_num, "\n")

代码说明

  • 逻辑完全对齐手动操作流程:每轮统计每列中数值小于25的元素个数,选择计数最高的列,筛选保留该列数值大于25的行,作为下一轮的输入矩阵
  • 保留drop = FALSE参数,避免筛选到单行/空结果时矩阵结构退化为向量,导致后续循环报错
  • 针对给出的测试数据运行代码,会输出总迭代次数:3,和手动统计结果完全匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 02:09:09