Кто-нибудь может мне помочь? Предположим, что «р» является полностью экзогенным и следует за равномерным распределением. Затем я хочу сгенерировать «z», который является фиктивным (= 1) или FALSE (= 0), и обладает тем свойством, что суммирование каждого из трех элементов (1-3, 4-6, 7-9. .., 58-60) в «z» должно быть больше 0.Повторите цикл до тех пор, пока он не удовлетворит определенному условию
Например, если я получу «z», например {1 0 0 1 1 0 0 0 0 0 1 0 ...} Я надеюсь повторить цикл снова (поскольку sum (z [7: 9]) = 0), чтобы нарисовать другую «ошибку», пока я не получу новый «z», подобный {1 1 0 0 0 1 0 1 0 1 0 0 ...}, где все суммы для каждого трех элементов больше 0. Используемый мной код выглядит следующим образом. Где я ошибаюсь?
set.seed(005)
p<-runif(60, 0, 1)
for (i in 1:20) {
repeat {
error= -0.2*log((1/runif(60, 0, 1))-1) # a random component
z=(p<0.5+error) # TRUE/FALSE condition
z=replace(z, z==TRUE, 1) # replace z to 1 if z is true, else z=0
if (sum(z[(3*i-2):(3*i)])>0) {break}
}
}
Вы не сохраняете результаты своего цикла 'for' в любом месте ... вы хотели? Можете ли вы описать, как код, который вы показали, работает неправильно? – Justin