#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
.