在 r 中有 for 循环跳过一些值

Have for loop in r skip some values

我遇到以下问题,但找不到解决方案:

samplesize <- numeric(N)

for (i in 1:N){
 samplesize <- size[i,]

 # Make storage for the calculated values
 store <- matrix(data = NA, nrow = samplesize, ncos = N)

 # Get random number from normal distribution N times
 for (a in 1:N){
  store[,i] <- rnorm(n = samplesize, mean = avg, sd = stdvn)
 }
}

如您所见,我在循环中插入 'size' 的当前值以进行一些存储并获得一些随机数。但是,问题是 'size' 的某些值是零。这会导致生成 'store' 时出错,因为我询问它是否要生成零行。然后,它还会给出获取随机数的错误,因为我要求 n 为 0。我需要将 'store' 的数字添加到先前计算的值中,因此不希望将零变成一个,因为那时我会添加一个附加值,而 is 实际上应该为零。我想我想要的是循环跳过 'size' 的所有零值。有没有人有关于如何做到这一点的解决方案?非常感谢!

我认为您正在寻找的可能是 next 命令与 if 配对进行测试:

for (i in 1:10) {
  if(i == 3) {
    next
  }
  print(i)
}
#> [1] 1
#> [1] 2
#> [1] 4
#> [1] 5
#> [1] 6
#> [1] 7
#> [1] 8
#> [1] 9
#> [1] 10

(运行 使用一些快速示例代码,因为如果没有您以前的数据,我无法完全 运行 您的示例。如果它不起作用,您可以尝试向您的问题添加一些示例数据- sizeNavgstdvn 我认为是您在这里调用但未定义的内容。)

reprex package (v2.0.1)

于 2021-12-07 创建