我的代码如下:
#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时,我还想知道到那时它是多少次。
我该怎么办?
答案 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。