重复循环直到满足特定条件R.

时间:2018-05-30 12:51:08

标签: r

我的代码如下:

#1
evolve = function(N,p0,s){
tot.fit = p0*(1+s)+(1-p0)
A.fit= p0*(1+s)
return(rbinom(1,N,(A.fit/tot.fit))/N)
}

#2

N <- 1000
p <- 0.02
pvector = c() 

while(p<1 & (1-p)<1){

px <- evolve(N,p,0.02)
Nm <- 20
p <- (N*px)/(N+Nm)
pvector <- c(pvector, px)
}

tail(pvector,n = 1)的结束值只能达到0或1.我想修改我的脚本,使我的脚本的第2部分在循环中运行,将最终的尾(pvector,n = 1)值设为1,至少20次所需的次数。当它到达第20次尾(pvector,n = 1)的结束迭代为1时,我还想知道到那时它是多少次。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

您可以在r中使用repeat循环,如下所示:

count1s <- 0
count0s <- 0
repeat 
{ 
  #code to be repeated
 count1s <- count1s + 1;
 if(tail(pvector, n=1) == 0)
    count0s <- count0s + 1
 if(tail(pvector, n=1) == 1 & count1s >=20)
   break;
}

count0s将给出tail(pvector,n = 1)为0的次数,count1s将帮助你重复循环至少20次,其中tail(pvector,n = 1)的值为1。