Menu
Coddy logo textTech

Vektorisierte Logik Teil 2

Teil des Abschnitts Grundlagen der R-Journey von Coddy — Lektion 21 von 78.

Genauso wie AND und OR vektorisierte Versionen haben, arbeitet auch der NOT-Operator elementweise auf Vektoren. Wenn Sie ! auf einen Vektor von logischen Werten anwenden, kehrt er jedes Element einzeln um.

passed <- c(TRUE, FALSE, TRUE, FALSE)
!passed  # FALSE TRUE FALSE TRUE

Jedes TRUE wird zu FALSE und jedes FALSE wird zu TRUE. Dies ist besonders nützlich, wenn Sie Elemente finden möchten, die eine bestimmte Bedingung nicht erfüllen:

temperatures <- c(18, 25, 30, 15, 22)

# Finde Temperaturen, die NICHT über 20 liegen
!(temperatures > 20)  # TRUE FALSE FALSE TRUE FALSE

Sie können das vektorisierte NOT mit & und | kombinieren, um komplexe Filter zu erstellen:

ages <- c(16, 25, 18, 30, 14)
has_permission <- c(TRUE, TRUE, FALSE, TRUE, TRUE)

# Kann teilnehmen, wenn: Alter >= 18 ODER (unter 18 UND Erlaubnis vorhanden)
can_participate <- ages >= 18 | (ages < 18 & has_permission)
# TRUE TRUE FALSE TRUE TRUE

Denken Sie daran: Verwenden Sie einfache &, | und ! beim Arbeiten mit Vektoren und doppelte &&, || beim Vergleichen einzelner Werte.

challenge icon

Aufgabe

Einfach

Verwenden Sie den vektorisierten NOT-Operator (!) zusammen mit & und |, um komplexe elementweise logische Bedingungen zu erstellen.

Ihnen stehen die folgenden Vektoren zur Verfügung:

scores <- c(45, 72, 88, 55, 91, 38, 67)
attended <- c(TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE)
submitted_homework <- c(TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE)

Verwenden Sie vektorisierte logische Operatoren einschließlich des NOT-Operators, um die folgenden logischen Vektoren zu erstellen:

  1. Erstellen Sie einen Vektor namens failed, der TRUE für jeden Score speichert, der NICHT größer oder gleich 60 ist.
  2. Erstellen Sie einen Vektor namens absent, der das Gegenteil von attended speichert (jeden Wert umkehren).
  3. Erstellen Sie einen Vektor namens at_risk, der TRUE für jeden Schüler speichert, der NICHT anwesend war ODER die Hausaufgaben NICHT eingereicht hat.
  4. Erstellen Sie einen Vektor namens passing_but_absent, der TRUE für jeden Schüler speichert, der einen Score größer oder gleich 60 hat UND NICHT anwesend war.
  5. Erstellen Sie einen Vektor namens needs_support, der TRUE für jeden Schüler speichert, bei dem gilt: (Score ist kleiner als 50) ODER (war NICHT anwesend UND hat die Hausaufgaben NICHT eingereicht).

Verwenden Sie die Funktion print(), um failed, absent, at_risk, passing_but_absent und needs_support in genau dieser Reihenfolge anzuzeigen.

Spickzettel

Der NOT-Operator (!) arbeitet elementweise auf Vektoren und kehrt jeden logischen Wert einzeln um:

passed <- c(TRUE, FALSE, TRUE, FALSE)
!passed  # FALSE TRUE FALSE TRUE

Verwenden Sie !, um Elemente zu finden, die eine Bedingung nicht erfüllen:

temperatures <- c(18, 25, 30, 15, 22)
!(temperatures > 20)  # TRUE FALSE FALSE TRUE FALSE

Kombinieren Sie das vektorisierte NOT mit & und | für komplexe Filter:

ages <- c(16, 25, 18, 30, 14)
has_permission <- c(TRUE, TRUE, FALSE, TRUE, TRUE)

# Can participate if: age >= 18 OR (under 18 AND has permission)
can_participate <- ages >= 18 | (ages < 18 & has_permission)
# TRUE TRUE FALSE TRUE TRUE

Denken Sie daran: Verwenden Sie das einfache &, | und ! für Vektoren; verwenden Sie das doppelte &&, || für Einzelwerte.

Probier es selbst

# Gegebene Vektoren
scores <- c(45, 72, 88, 55, 91, 38, 67)
attended <- c(TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE)
submitted_homework <- c(TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE)

# TODO: Schreibe deinen Code unten
# 1. Erstelle 'failed' - TRUE für scores NICHT >= 60

# 2. Erstelle 'absent' - Gegenteil von attended

# 3. Erstelle 'at_risk' - NICHT attended ODER NICHT submitted homework

# 4. Erstelle 'passing_but_absent' - score >= 60 UND NICHT attended

# 5. Erstelle 'needs_support' - (score < 50) ODER (NICHT attended UND NICHT submitted homework)

# Ergebnisse ausgeben
print(failed)
print(absent)
print(at_risk)
print(passing_but_absent)
print(needs_support)
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen