Путаница вложенного выражения ifelse

#r #if-statement

#r #если-заявление

Вопрос:

Рассмотрим приведенное ниже выражение:

 x$Y = ifelse(x$Alt;= 5 amp; abs(x$B) gt;= 2,   ifelse(x$Bgt; 2 ,"YES","NO"),  'NA')  

Что я понимаю, так это то, что если A lt;=5 и B gt;=2, то ВСЕ ДА, если нет, то НЕТ, но меня смущает второе условие lt;=5 и B gt; ifelse . Любая помощь будет высоко оценена.

Спасибо

Ответ №1:

Этот код предназначен для определения нового столбца Y в наборе данных x . Столбец Y будет заполнен на основе следующих утверждений: введите описание изображения здесь

Ответ №2:

Если мы перепишем ваше ifelse выражение с использованием расширенного синтаксиса, это может быть проще для понимания.

 x$Y lt;- ifelse(x$A lt;= 5 amp; abs(x$B) gt;= 2, ifelse(x$B gt; 2, "YES", "NO"), 'NA')  # becomes  if (x$A lt;= 5 amp; abs(x$B) gt;= 2) {  if (x$B gt; 2) {  x$Y lt;- "YES"  } else {  x$Y lt;- "NO"  } } else {  x$Y lt;- NA }  

Вторая вложенная ifelse() соответствует внутренней if выше. Он проверяет значение x$B , чтобы увидеть, больше ли оно 2 или меньше -2 (одно из них может быть основано на более ранней проверке abs(x$B) gt;= 2 . Если первое имеет место, то x$Y ему присваивается YES , в противном случае ему присваивается NO .