2014-01-23 2 views
1

В принципе у меня есть два цикла while в моем коде. Все, что они делают, подсчитывается с шагом 1 от 0 до 10 или -10. Векторы, которые считаются «count1» и «count2». Это происходит в моем коде в двух отдельных циклах. Однако теперь мне нужно, чтобы каждый счет зависел друг от друга, поэтому мне нужны они в одном цикле. Возможно ли иметь два отдельных режима работы в одном цикле. Например, что у меня есть сейчас:Как создать два условия в цикле While?

count1 = 0 
    count2 = 0 
    l_RWM = vector() 
    r_RWM = vector()  


while (count1 < 10 && count1 > -10){ 

    count1 = count1 + (sample(c(1,-1), 1, prob = c(.55,.45))) 

    l_RWM = append(l_RWM,count1) 

} 

while (count2 < 10 && count2 > -10){ 

    count2 = count2 + (sample(c(1,-1), 1, prob = c(.55,.45))) 

    r_RWM = append(r_RWM,count2) 

} 

Но я хочу что-то вроде

while (count1&count2 < 10 && count1&count2 > -10){ 

if(count1 < 10 && count1 > -10) count1 = count1 + (sample(c(1,-1), 1, prob = c(.55,.45))) 
    else count1 = count1 

    if(count2 < 10 && count2 > -10) count2 = count2 + (sample(c(1,-1), 1, prob = c(.55,.45))) 
    else count2 = count2 

    l_RWM = append(l_RWM,count1) 
    r_RWM = append(r_RWM,count2) 

} 

Мой «если» код должен иметь только счетчик возникает, когда объект не достигло 10 или -10. НАПРИМЕР. count2 будет по-прежнему считать вверх или вниз, даже если count1 завершен. Мой код не работает, и я не ищу ответа, но более того, причина, почему это не так. Помня, что я очень новичок в R, и заранее извиняюсь, если этот вопрос тривиален: p.

Для тех, кому интересно, причина, по которой они мне нужны в одном цикле, состоит в том, что я ищу что-то вроде: если count1 увеличивается, а count2 уменьшается.

Благодаря

+0

Ваши инструкции 'if' не нужны, потому что они всегда будут' TRUE' внутри вашего цикла while. –

+0

@ SeñorO Что делать, если count1 достигает 10 или -10, а count2 - нет. Использует ли это их использование? Или я вижу это неправильно. Спасибо за ответ. – Gabriel

+0

Вы хотите использовать '||' not '&&' – smac89

ответ

1

Я предполагаю, из вашего кода псевды, что вы просто хотите, чтобы убедиться, как count1 и count2 меньше, чем 10, и что count1 и count2 больше, чем -10. Что я хотел бы сделать что-то вроде этого:

while (count1 < 10 && count2 < 10 && count1 > -10 && count2 > -10){ 

Вам не нужно что-либо группы с скобкой, так как все операции AND вместе и нет смешанной логики.

+0

Этот код работает лучше, поскольку цикл фактически рассчитывает сейчас. Однако он заканчивается, как только один из отсчетов достигает 10 или -10. – Gabriel

+0

Если вы хотите, чтобы он продолжал идти до тех пор, пока не достигнет 10 или -10, используйте OR. while ((count1 <10 && count2 <10) || (count1> -10 && count2> -10)) таким образом, как только один из отсчетов достигнет 10 или -10, условие все равно будет истинным, пока другой счет не достигнет 10 или -10. – snypeNET

Смежные вопросы