Kurzusok
/
R
R
/
Tanterv
/
Booleanok
Bo

Booleanok ebben a kurzusban: R

1 feladat

A(z) Booleanok fogalomról

Boolean értékek R-ben

Az igaz és hamis értékeket a logical típus képviseli. Ez csak két értéket tartalmaz: TRUE és FALSE.

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

Boolean operátorok

R-ben öt Boolean operátor van.

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

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

A && és a & a Boolean „és” művelet. Az eredményük akkor TRUE, ha a && mindkét oldalán szereplő kifejezés TRUE.

A || és a | a Boolean „vagy” művelet. Az eredményük akkor TRUE, ha a || valamelyik oldalán szereplő kifejezés TRUE.

Figyeld meg, hogy az és/vagy operátoroknak két csoportja van.

  • A kétkarakteres változatok egyetlen értéken működnek.
  • Az egykarakteres változatok elemenként hatnak a vektorokra, és Boolean-ok vektorát adják vissza.

Ez a megkülönböztetés fontossá válik majd, és valószínűleg világosabb is lesz a vector-filtering fogalomban.

Az & és a | használata egyetlen értékeken a fenti példában is működik, mert ezeket 1 hosszúságú vektorként kezeli. A viselkedés azonban finoman eltér a kétkarakteres operátorokétól, mivel csak az utóbbiak „rövidzárlatosak”: a jobb oldali érték ki sem értékelődik, ha a bal oldali érték már elegendő az eredmény meghatározásához. Így a TRUE || anything mindig TRUE, függetlenül attól, hogy az anything milyen logikai kifejezést képvisel, ezért az anything figyelmen kívül marad.

Ha a && vagy a || operátort vektorokon (2 vagy több elemű) használod, az összehasonlításban csak az első elem számít, így egyetlen TRUE/FALSE értéket kapsz, valószínűleg egy figyelmeztetéssel együtt. Ez valószínűleg nem az, amit szerettél volna.

A ! a Boolean „nem” művelet. Ez felcseréli a TRUE és FALSE értékeket.

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

Hosszabb és bonyolultabb kifejezéseknél a legjobb, ha zárójelekkel teszed egyértelművé a szándékodat.

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

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

A kizáró vagy művelethez (azaz A vagy B, de nem mindkettő) nincs infix operátor. Ebben az esetben az xor() függvényt használhatod.

xor(TRUE, FALSE)
#> [1] TRUE
xor(TRUE, TRUE)
#> [1] FALSE
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg

Tanuld meg a(z) Booleanok fogalmat