我需要计算一次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
请帮助我了解为什么会发生这种情况,因为我之前也遇到过类似的问题。
答案 0 :(得分:2)
您需要在for循环中重置x
和count
,否则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