R中的“for循环”中的“while循环”不起作用?

Posted

技术标签:

【中文标题】R中的“for循环”中的“while循环”不起作用?【英文标题】:"while loop" inside a "for loop" in R not working? 【发布时间】:2016-01-18 11:05:36 【问题描述】:

所以作为一个实验,我想模拟一个有 100 个球的瓮,R 应该继续提取其中一个,直到我得到一个特定的球号(在球 n100 以下的情​​况下),例如:

urn <- c(1:100)
num <- 0
while(num != 100)
            num <-sample(urn, 1, FALSE)
            

但我想知道的是,在重复此实验 100.000 次后,平均需要多少次试验才能提取 n100。我是 R 新手,所以我尝试为基本实验制作一个 for 循环以重复 100.000 次。 代码如下:

rep <- 100000
urn <- c(1:100)
num <- 0
trials <- 0
tottrials <-0
for (i in 1:rep)
    while(num != 100)
        num <-sample(urn, 1, FALSE)
        trials <- trials +1
        
    tottrials <- tottrials + trials
    
cat(prettyNum(prove, big.mark="'"),tottrials/rep,"\n")

但使用这种方法,它只执行 while 循环 1 次,然后重复找到的试验次数 100.000 次(而不是重新找到新的试验次数。证明:如果我让它粘贴它所做的试验次数,他将粘贴相同的随机一个 100.000 次)。为什么? :(

【问题讨论】:

因为num==100第一次之后,就再也没有变过。我不确定你认为你的循环在哪里发生了变化。它完全按照您编写的代码运行。 弗利克先生:好的,谢谢! Cleb:抱歉,应该用“rep”代替“prove”。我将变量名称从意大利语更改为英语以使其更易于阅读,但我忘记了最后一个。 【参考方案1】:

尝试将trialsnum 变量放入循环中。它们将为下一次重复重置:

rep <- 100000
urn <- c(1:100)
tottrials <-0
for (i in 1:rep)
    num <- 0
    trials <- 0
    while(num != 100)
        num <-sample(urn, 1, FALSE)
        trials <- trials +1
        
    tottrials <- tottrials + trials
    

tottrials/rep
[1] 99.51042

【讨论】:

以上是关于R中的“for循环”中的“while循环”不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

对于 R 中的大型必要循环,“while 循环”是不是应该优于“for 循环”?

R中的for循环与while循环

Keil - 我的 while 循环不起作用

R循环函数(forwhilebreaknext)

R中的并行while循环

Python中的用for,while循环遍历文件实例