我在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的新手,我不确定如何改变我为实现我所需要而做的事情。
答案 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