Повторять цикл до тех пор, пока не будет выполнено определенное условие. R - PullRequest
0 голосов
/ 30 мая 2018

У меня есть следующий код:

#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 моего сценария выполняется в цикле столько раз, сколько требуется, чтобы получить окончательное значение tail (pvector, n = 1) равным 1, по крайней мере, 20 раз.Когда он достигнет конечной итерации 20-го времени tail (pvector, n = 1) , равного 1, я также хотел бы знать, сколько раз до этого времени это было 0.

Как сделатьЯ делаю это?

1 Ответ

0 голосов
/ 30 мая 2018

Вы можете использовать повторение цикла в r следующим образом:

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 раз с хвостом (pvector, n = 1), имеющим значение 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...