Влияют ли предыдущие вычисленные строки на последовательные строки в al oop для 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)
  } 
  else if(i < 5){
     x[i] = !x[i] | !x[i+1]
  }
}

Я пытаюсь выяснить вывод, который он мне дает

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

Мне интересно, если первое значение x[2] (которое является x[2] = T & F & T) повлияет на вывод следующей строки x[3] или если эти вычисления для каждой строки не зависят друг от друга?

1 Ответ

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

Да, ваш код видоизменяется x в for l oop:

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

for (i in 1:5){
  cat(paste0("\nLoop iteration Nr. ", i, " 'x' is: ", paste0(x, collapse=", ")))
  if(i > 1 & i < 5){
    cat(paste0("\nAbout to set x[", i, "] to ", x[i - 1] & x[i + 1] & x[i]))
    x[i] = x[i - 1] & x[i + 1] & x[i]

  } else if(i < 5){
    cat(paste0("\nAbout to set x[", i, "] to ", !x[i] | !x[i+1]))
    x[i] = !x[i] | !x[i+1]
  }
}

Loop iteration Nr. 1 'x' is: TRUE, TRUE, FALSE, TRUE, FALSE
About to set x[1] to FALSE
Loop iteration Nr. 2 'x' is: FALSE, TRUE, FALSE, TRUE, FALSE
About to set x[2] to FALSE
Loop iteration Nr. 3 'x' is: FALSE, FALSE, FALSE, TRUE, FALSE
About to set x[3] to FALSE
Loop iteration Nr. 4 'x' is: FALSE, FALSE, FALSE, TRUE, FALSE
About to set x[4] to FALSE
Loop iteration Nr. 5 'x' is: FALSE, FALSE, FALSE, FALSE, FALSE

И поскольку вы используете в каждой итерации предыдущее значение для вычисления текущего значения, i-й шаг влияет на я + 1-й шаг.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...