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

R语言如何保存for循环每次迭代的cmin计算结果到矩阵

R实现循环保存每次迭代最小值列索引的方法

原脚本问题

原有代码的问题是循环过程中每次都会覆盖output和cmin变量,没有预留存储容器存放每一轮迭代的计算结果,循环结束后只能拿到最后一次迭代的cmin值,无法得到全部12轮的结果。

修正后代码

提前预分配12行1列的结果矩阵,每轮循环计算得到cmin后,直接存入矩阵对应行的位置即可:

# 加载目标数据框dx
dx <- structure(list(a = c(0.916290731874155, 2.89037175789616, -0.156004248476581, 
-0.318453731118534, -2.07944154167984, 2.00533356952611, -1.24319351747922, 
0.42744401482694, 1.29532258291416, -2.03292152604494, -0.606135803570316, 
-0.693147180559945), b = c(0.550046336919272, 0.228258651980981, 
-0.577634293438101, 0.135801541159061, 0.644357016390513, -2.30258509299405, 
-0.0870113769896297, 1.71297859137494, 0.17958557697508, -1.65140211153313, 
1.31218638896617, 0.282862786015832), c = c(0.0988458346366325, 
-3.34403896782221, 1.99243016469021, -1.70474809223843, 2.62103882411258, 
2.20727491318972, -1.40242374304977, -1.256836293883, -2.16905370036952, 
2.91777073208428, 0.138586163286146, -0.946143695023836), d = c(0.268263986594679, 
-2.83321334405622, 1.83258146374831, 1.15057202759882, 0.0613689463762919, 
-2.23359222150709, 4.34236137828145, -3.44854350225935, 1.29098418131557, 
-0.356674943938732, -0.21868920096483, -0.810930216216329), e = c(1.65140211153313, 
0.220400065368459, -0.044951387862266, 0.0773866636154201, -1.49877234454658, 
1.36219680954083, -0.295845383090942, -0.709676482511156, -0.916290731874155, 
1.65822807660353, 0.451985123743057, -0.810930216216329)), class = "data.frame", row.names = 2:13)

# 预分配12行1列的结果矩阵,初始填充NA
cmin_res <- matrix(NA, nrow = 12, ncol = 1)

for(i in 1:12) {
  output <- 2*dx[i,]
  # 将当前轮次计算得到的最小值列索引存入结果矩阵对应位置
  cmin_res[i, 1] <- which.min(output)
}

# 打印结果
print(cmin_res)

运行后即可得到你预期格式的输出结果。

更简便的无循环写法

R中优先推荐向量化操作,不需要写循环就能一次性得到结果,运行效率更高:

# 对dx所有值乘2后,按行计算最小值的列索引,最后转为1列矩阵
cmin_res <- matrix(apply(2 * dx, 1, which.min), ncol = 1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 18:54:28