Пока l oop с выборкой, пока объект не примет одно из выбранных значений - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь настроить процесс, используя while l oop, чтобы мой код последовательно выбирал среди определенных xd[i] до того, как один конкретный xd[i] станет равным x.

Я знаю, что было бы более эффективно поместить все под единицу для l oop (кроме времени l oop), но я пытаюсь создать это шаг за шагом. Прямо сейчас я застрял на части while l oop. Я не могу запустить эту часть кода без сбоя R, или, если он не обработает sh, он продолжает непрерывную выборку, пока я не остановлю его вручную. Как я могу изменить мой while l oop таким образом, чтобы он производил выборку по вектору xd, пока один из элементов xd не совпадет с x?

Спасибо

reset1 = {

a = 0.3 #lower legal threshold 

b = 0.9 #upper legal threshold

x = 0  

theta = runif(1,min = a, max = b)
theta


A = 5 ## monetary value of harm from 

maxw = 2*A

minw = 0

wbar = (maxw+minw)/2  ##average cost
wbar

xd = c(1,2,3)

w = c(1,2,3)

}
for (i in 1:length(xd)){w[i] = runif(1, min = 0, max = 2)} #trying to make it create a w for each person



##Drivers problem: pick the x that will minimize your cost

for(i in 1:length(xd)){xd[i] = min(c(1-(w[i]/(2*A)),((2+b)-sqrt(b^2-2*b+1+3*(w[i]/A)*(b-a)))/3,b))}

xd  

for(i in 1:length(xd)){proba = function(xd){(xd-1)^2}}  
proba(xd)   #ith individual probability of getting in an accident given their xd[i]
proba(xd[c(1:3)])

probn = 1 - proba(xd)      #probability of not getting in an accident given driveri's effort level
probn

while (any(x!=xd)) {x = sample(c(xd[c(1,2,3)],0,0,0),size = 1, replace = TRUE, prob = c(proba(xd), probn)) ###the x is selected based on which ever x resulted in an accident   

  }

show(x)   

1 Ответ

0 голосов
/ 03 марта 2020

Возможно

while(sum(xd!=x)==3){}

Этот цикл выполняется до тех пор, пока элемент xd не равен x

...