【问题标题】:Have for loop in r skip some values让 r 中的 for 循环跳过一些值
【发布时间】:2022-01-12 10:21:46
【问题描述】:

我遇到了以下问题,无法找到解决方案:

  • 我有一个数据框,其中包含我在上一个循环中计算的 N 个样本大小(现在称之为“大小”)
  • 我创建了一个新循环,对于每个“大小”值,我都想计算一些东西。这样做的方式如下:
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”的当前值以进行一些存储并获取一些随机数。但是,问题是“大小”的某些值为零。这会导致制作“商店”时出错,因为我问它是否想要制作零行。然后,它也给出了获取随机数的错误,因为我要求一个 0。我需要将“存储”的数字添加到先前计算的值中,因此不希望将零变成 1,因为然后我会添加一个附加值,而 is 实际上应该为零。我想我想要的是循环跳过所有为零的“大小”值。有没有人有关于如何做到这一点的解决方案?提前非常感谢!

【问题讨论】:

    标签: r for-loop skip


    【解决方案1】:

    我认为您正在寻找的可能是 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
    

    (使用一些快速示例代码运行,因为如果没有您以前的数据,我无法完全运行您的示例。如果它不起作用,您可以尝试在您的问题中添加一些示例数据 - sizeN、@ 987654327@ 和 stdvn 我想这就是你在这里所说的,但没有定义。)

    reprex package 创建于 2021-12-07 (v2.0.1)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-16
      • 1970-01-01
      • 1970-01-01
      • 2022-07-07
      • 1970-01-01
      • 2017-05-09
      • 1970-01-01
      • 2020-06-22
      相关资源
      最近更新 更多