Привет всем, у меня есть проблема с счетчиком, который я создал в цикле for. Вот код.Увеличение счетчика в цикле for в R
n1<- 0
n2<- 0
n<- 20
f<- rep(NA,20)
set.seed(10)
x<- runif(20)
for(i in 1:20) {
f[i]<- ifelse(x[i]<0.5, 'a', 'b')
if((n1-n2)==2) {
break
}
if(f[i]=='a')
n1<- n1 + 1 else n2<- n2 + 1 # n1 counts a's n2 counts b's
}
[1] "b" "a" "a" "b" "a" "a" "a" NA NA NA NA NA NA NA NA NA NA NA NA NA
Как вы можете видеть из номера результата a = 5 и b's = 2. Но когда я называю n1 и n2, он возвращает 4 для n1, что неверно. Почему это? Как я ошибаюсь? Заранее спасибо .
Я начинаю выборку a и b с вероятностью 0,5 .20 всего. В какой-то момент, о котором я не знаю заранее, количество a - число b превышает 2. Когда это произойдет, я хочу, чтобы вероятность выборки изменилась до 0,2. То, чего я пытаюсь достичь.
Вам действительно нужно научиться правильно использовать ifelse. Использование его в середине цикла for-loop «просто неправильно». –
Если я не использую и вместо примера использую образец, то как я могу идентифицировать в цикле, где выполняется условие n1-n2 == 2? , Как я могу разбить цикл именно в этой точке и продолжить следующую итерацию, изменяя вероятность выборки? – Manos
Я не говорил, что не использую for-loop (хотя, думаю, вам уже предоставили гораздо лучшую альтернативу ниже). Я говорил, что использование 'ifelse()' с векторами длины-1 было чем-то глупым. Если вы используете цикл, то вы должны использовать 'if() {} else {}' –