4.7 Základní logické operace
Zakladni logicke operace zahrnuji logicky soucin ("a zaroven," &
), logicky soucet ("nebo," |
) a negaci ("opak," !
). Krome toho samozrejme funguji i zavorky. Vyznam jednotlivych operaci ukazuje tabulka 4.1.
Všimněte si, že !(V1 & V2)
\(=\) !V1 | !V2
a !(V1 | V2)
\(=\) !V1 & !V2
.
V1 |
V2 |
V1 & V2 |
V1 | V2 |
!V1 |
!(V1 & V2) |
!(V1 | V2) |
---|---|---|---|---|---|---|
TRUE |
TRUE |
TRUE |
TRUE |
FALSE |
FALSE |
FALSE |
TRUE |
FALSE |
FALSE |
TRUE |
FALSE |
TRUE |
FALSE |
FALSE |
TRUE |
FALSE |
TRUE |
TRUE |
TRUE |
FALSE |
FALSE |
FALSE |
FALSE |
FALSE |
TRUE |
TRUE |
TRUE |
Logický součin a součet existují v R ve dvou formách: jednoduché a “zkratující.” Ta druhá operátory zdvojuje, takže místo &
se použije &&
a místo |
se použije ||
. Jednoduchá forma se používá při vyhodnocování operátorů na logických vektorech:
c(TRUE, TRUE, FALSE, FALSE) & c(TRUE, FALSE, TRUE, FALSE)
## [1] TRUE FALSE FALSE FALSE
c(TRUE, TRUE, FALSE, FALSE) | c(TRUE, FALSE, TRUE, FALSE)
## [1] TRUE TRUE TRUE FALSE
Zkratujici forma se pouziva v podminkach, viz oddil 7.1. V tomto případě se vyhodnocování výrazu zastaví ve chvíli, kdy je výsledek jednoznačně známý, tj. např. ve výrazu
FALSE && !(TRUE || FALSE)
## [1] FALSE
vyhodnocování skončí hned prvním FALSE
, protože po jeho vyhodnocení výsledek jasný. Pokud byste použili zkratující formu na vektory, výsledek se bude týkat první položky vektoru:
c(TRUE, FALSE) && c(TRUE, TRUE)
## [1] TRUE
Vektorová funkce all()
vrátí TRUE
, pokud jsou všechny prvky vektoru TRUE
; jinak vrátí FALSE
. Vektorová funkce any()
vrátí TRUE
, pokud je aspoň jedna hodnota TRUE
; jinak vrátí FALSE
. (Jedná se tedy o logický součin a součet přes všechny prvky vektoru.) Funkce all.equal()
a identical()
byly představeny výše.
all(c(TRUE, TRUE, TRUE))
## [1] TRUE
all(c(TRUE, TRUE, FALSE))
## [1] FALSE
any(c(TRUE, TRUE, FALSE))
## [1] TRUE
any(c(FALSE, FALSE, FALSE))
## [1] FALSE