Треки
/
R
R
/
Салабус
/
Булеві значення
Бу

Булеві значення у R

1 вправа

Про концепцію Булеві значення

Булеві значення в R

Значення правда або неправда представлені типом logical. Він містить лише два значення: TRUE та FALSE.

TRUE
#> [1] TRUE
FALSE
#> [1] FALSE
typeof(TRUE)
#> [1] "logical"

Булеві оператори

У R є пʼять булевих операторів.

!TRUE # FALSE (not)
TRUE && FALSE # FALSE (scalar and)
TRUE || FALSE # TRUE (scalar or)

TRUE & FALSE # FALSE (vector and)
TRUE | FALSE # TRUE (vector or)

&& (логічне і) та & (логічне і) є булевими «і». Вони обчислюються до TRUE, якщо вирази з обох сторін && (і) є TRUE.

|| (логічне або) та | (логічне або) є булевими «або». Вони обчислюються до TRUE, якщо вираз з будь-якої сторони || (або) є TRUE.

Зауважмо, що є два набори операторів «і/або».

  • Версії з подвійними символами працюють з окремими значеннями.
  • Варіанти з одним символом працюють поелементно з векторами, повертаючи вектор булевих значень.

Ця відмінність стане важливою, і, ймовірно, зрозумілішою, у концепції vector-filtering.

Використання & та | з окремими значеннями працює в наведеному вище прикладі, оскільки вони обробляються як вектори довжини 1. Поведінка дещо відрізняється від операторів з подвійними символами, оскільки лише останні мають коротке замикання: значення праворуч не обчислюється, якщо лівого значення достатньо для визначення результату. Отже, TRUE || anything завжди TRUE, незалежно від того, який логічний вираз представляє anything, тому anything ігнорується.

Використання && або || з векторами (довжиною 2 або більше) означає, що в порівнянні використовується лише перший елемент, що дає єдине TRUE/FALSE і, ймовірно, попереджувальне повідомлення. Це, ймовірно, не те, що ми мали на увазі.

! є логічним запереченням. Він обмінює значення TRUE та FALSE.

!TRUE
#> [1] FALSE
!FALSE
#> [1] TRUE

Для довших і складніших виразів краще використовувати дужки, щоб зробити намір зрозумілим.

(TRUE || FALSE) && (FALSE && TRUE)
#> [1] FALSE

TRUE || FALSE && (FALSE && TRUE)
#> [1] TRUE

Немає інфіксного оператора для виключного або (тобто A АБО B, але не обидва). У цьому випадку можна використати функцію xor().

xor(TRUE, FALSE)
#> [1] TRUE
xor(TRUE, TRUE)
#> [1] FALSE
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці

Вивчити концепцію Булеві значення