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

R语言for循环如何跳过取值为0的样本量避免运行报错

R循环跳过size为0的迭代解决方案

核心解决方案

你只需要在拿到当前迭代的samplesize后新增条件判断,值为0时用next关键字直接跳过本次循环的剩余代码即可,修改后代码如下:

for (i in 1:N){
  samplesize <- size[i,]
  # 新增判断:样本量为0时直接进入下一轮迭代
  if (samplesize == 0) {
    next
  }

  # 修正原笔误:参数ncos应为ncol
  store <- matrix(data = NA, nrow = samplesize, ncol = N)

  # 生成随机数,修正原逻辑问题:原赋值给store[,i]会重复覆盖同一列
  for (a in 1:N){
    store[,a] <- rnorm(n = samplesize, mean = avg, sd = stdvn)
  }
  # 你后续的store数值相加逻辑放在此处即可
}
  • next是R循环的内置关键字,触发后会直接终止当前轮次的循环,不会执行后续创建矩阵、生成随机数的逻辑,完全不会产生额外数值,也不会触发0行矩阵/n=0的报错。

优化方案(更高执行效率)

你也可以提前筛选出size中不为0的索引,仅遍历这些有效索引,省去循环内的判断步骤:

# 提前筛选非0的索引
valid_idx <- which(size != 0)

for (i in valid_idx){
  samplesize <- size[i,]
  store <- matrix(data = NA, nrow = samplesize, ncol = N)
  for (a in 1:N){
    store[,a] <- rnorm(n = samplesize, mean = avg, sd = stdvn)
  }
  # 后续计算逻辑
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:06:01