смысл смысла для l oop с оператором if в R - PullRequest
0 голосов
/ 09 февраля 2020

Это практический вопрос для подготовки к экзамену. Нам дают этот код:

x=c(T,T,F,T,F)

for (i in 1:5){
  if(i > 1 & i < 5){
     x[i ] = x[i-1] & x[i+1] & x[i]

     print(x)
  }
}

и просят предсказать вывод. Вывод:

[1]  TRUE FALSE FALSE  TRUE FALSE
[1]  TRUE FALSE FALSE  TRUE FALSE
[1]  TRUE FALSE FALSE FALSE FALSE

, и я не могу по жизни для меня понять это. Может кто-нибудь объяснить, пожалуйста, логи c за вывод? Я использовал для циклов и операторов if ... else в других контекстах, но true / false действительно отталкивает меня. Я предполагаю, что выходных данных три строки, потому что в операторе if 3 значения i. Когда я пытаюсь «запустить» код в моей голове, я получаю одну строку вывода: «ИСТИНА, ЛОЖЬ, ЛОЖЬ, ЛОЖЬ, ЛОЖЬ», потому что i = 1 и i = 5 будут неизменными, а i = 2 3,4 ложны, потому что x [i-1] & x [i + 1] & x [i] дают ложь в качестве ответа в логических логиках c.

1 Ответ

0 голосов
/ 09 февраля 2020

Когда i равен 1 или 5, l oop не дает никакого вывода вообще. Когда i равно 2, второе место в x заменяется значением 'and' позиций с 1 по 3 (что неверно), а затем выводит x в его текущей форме.

То же самое для i равно 3 и 4 (печать x в конце каждого раунда) с единственным видимым результатом - превращение 4-го места T в F.

...