让 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
(使用一些快速示例代码运行,因为如果没有您以前的数据,我无法完全运行您的示例。如果它不起作用,您可以尝试在您的问题中添加一些示例数据 - size
、N
、@ 987654327@ 和 stdvn
我想这就是你在这里所说的,但没有定义。)
由reprex package 创建于 2021-12-07 (v2.0.1)
【讨论】:
以上是关于让 r 中的 for 循环跳过一些值的主要内容,如果未能解决你的问题,请参考以下文章
在 if 语句的帮助下,让 R 在 while 循环中跳过某些索引值