让 r 中的 for 循环跳过一些值

Posted

技术标签:

【中文标题】让 r 中的 for 循环跳过一些值【英文标题】:Have for loop in r skip some values 【发布时间】: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 实际上应该为零。我想我想要的是循环跳过所有为零的“大小”值。有没有人有关于如何做到这一点的解决方案?提前非常感谢!

【问题讨论】:

【参考方案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)

【讨论】:

以上是关于让 r 中的 for 循环跳过一些值的主要内容,如果未能解决你的问题,请参考以下文章

跳过 for 循环中的第一个值

如何使用R中的下一个函数跳过for循环中的迭代[重复]

在 if 语句的帮助下,让 R 在 while 循环中跳过某些索引值

Python:如果条件为真,则跳过 For 循环中的迭代

JAVA。我嵌套的for循环,我从另一个数组插入数组中的整数跳过整个部分,除了第一个和最后一个值

在R中没有for循环的行之间移动值