Tracks
/
R
R
/
Lehrplan
/
Boolesche Werte
Bo

Boolesche Werte in R

1 Übung

Über Boolesche Werte

Boolesche Werte in R

Die Werte wahr und falsch werden durch den Typ logical dargestellt. Er enthält nur die beiden Werte TRUE und FALSE.

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

Boolesche Operatoren

Es gibt fünf boolesche Operatoren in R.

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

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

&& und & sind das boolesche „und". Sie ergeben TRUE, wenn die Ausdrücke auf beiden Seiten von && TRUE sind.

|| und | sind das boolesche „oder". Sie ergeben TRUE, wenn ein Ausdruck auf einer der beiden Seiten von || TRUE ist.

Beachte, dass es zwei Gruppen von Und/Oder-Operatoren gibt.

  • Die Varianten mit zwei Zeichen arbeiten mit einzelnen Werten.
  • Die Varianten mit einem Zeichen arbeiten elementweise auf Vektoren und geben einen Vektor boolescher Werte zurück.

Diese Unterscheidung wird im Konzept vector-filtering wichtig werden, und wahrscheinlich auch klarer.

Die Verwendung von & und | auf einzelnen Werten funktioniert im obigen Beispiel, weil diese als Vektoren der Länge 1 behandelt werden. Das Verhalten unterscheidet sich geringfügig von dem der Operatoren mit zwei Zeichen, denn nur bei den letzteren wird die Auswertung abgebrochen: Der Wert auf der rechten Seite wird nicht ausgewertet, wenn der linke Wert bereits ausreicht, um das Ergebnis zu bestimmen. Somit ist TRUE || anything immer TRUE, egal welchen logischen Ausdruck anything darstellt; anything wird also ignoriert.

Wenn du && oder || auf Vektoren (Länge 2 oder mehr) anwendest, wird nur das erste Element im Vergleich verwendet, was ein einzelnes TRUE/FALSE und wahrscheinlich eine Warnmeldung ergibt. Das ist wahrscheinlich nicht, was du beabsichtigt hast.

! ist das boolesche „nicht". Es vertauscht TRUE- und FALSE-Werte.

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

Bei längeren und komplizierteren Ausdrücken solltest du runde Klammern verwenden, um deine Absicht klar zu machen.

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

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

Für das exklusive Oder (also A ODER B, aber nicht beides) gibt es keinen Infix-Operator. In diesem Fall kannst du die Funktion xor() verwenden.

xor(TRUE, FALSE)
#> [1] TRUE
xor(TRUE, TRUE)
#> [1] FALSE
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab

Lerne Boolesche Werte