如何编写一个循环,直到条件满足为止

时间:2014-03-05 15:15:25

标签: r

我在R中编写了以下循环。我希望循环继续运行,直到Y大于或等于3的情况。然后我想显示T,这是直到此结果运行的实验数第一次发生。

T=0
while(Y<3)
{
  X=rbinom(1,5,0.5)
  Y=rbinom(1,X,0.5)
  Outcome=Y
  T=T+1
}
T 

我是R的新手,我不确定如何改变我为实现我所需要而做的事情。

4 个答案:

答案 0 :(得分:2)

你不需要循环。以下使用R的矢量化,效率更高。

set.seed(42) #for reproducibility
n <- 1e4 #increase n and rerun if condition is never satisfied
X=rbinom(n,5,0.5) 
Y=rbinom(n,X,0.5)

#has condition been satisfied?
any(Y>3)
#TRUE

#first value that satisfies the condition
which.max(Y>3)
#[1] 141

答案 1 :(得分:1)

你可以使用do to construction:

while(TRUE){
  # Do things
  if(Y >= 3) break()
}

答案 2 :(得分:1)

如果您不知道执行循环的次数,那么在此情况下使用 while 循环。它执行循环,直到满足您所需的条件。您可以尝试以下代码。

T=0 #Index variable
Y=2 #Initial value that starts the while looping

首先循环检查此初始Y = 2,如果满足条件则开始直到条件不满意为止。

while(Y<3) #Initialization of your looping
{
  X=rbinom(1,5,0.5)
  Y=rbinom(1,X,0.5)
  T=T+1
}
T 

答案 3 :(得分:0)

while第一次检查它的状态时它找不到Y.尝试将Y初始化为小于3的值。

Y <- 0