计算while循环执行的次数,直到将其放置在for循环中为止(相同的输出一遍又一遍地重复)

时间:2019-06-13 00:46:01

标签: r

我需要计算一次while循环执行的次数,并且我能够针对一个实例执行此操作。但是,我想使这种情况发生几次,并将所有循环计数记录在一个向量中。

以下代码为我提供了while循环执行的次数(可以根据sample()函数的结果而变化):

x= 0
count = 0

while (x < 10) {
  y = sample(c(1,2), 1, c(.50,.50), replace = T)
  x = x+y
  count = count+1
}
count

这很好用。给我一个数字,该数字可以随机变化,但是为了讨论起见,我假设它是8

但是,当我将其放入for循环中时:

x= 0
count = 0
counts = c()

for (i in 1:5) {
  while (x < 10) {
    y = sample(c(1,2), 1, c(.50,.50), replace = T)
    x = x+y
    count = count+1
  }
  counts[i] = count
}  
counts

这给了我与非for循环代码相同的计数值,但是重复了5次。因此,假设计数为8,则此代码将返回8 8 8 8 8

我希望从for循环中返回5个独立的计数,以便输出看起来像这样(由于随机样本,这些数字是任意的)8 5 9 7 4

请帮助我了解为什么会发生这种情况,因为我之前也遇到过类似的问题。

1 个答案:

答案 0 :(得分:2)

您需要在for循环中重置xcount,否则x在for循环中运行的第二个(和第3-5个)将已经> 10。 / p>

for (i in 1:5) {
    x = 0
    count = 0
    while (x < 10) {
        y = sample(c(1,2), 1, c(.50,.50), replace = T)
        x = x+y
        count = count+1
    }
    counts[i] = count
}  
counts