Menu
Coddy logo textTech

Vektorisierte Logik Teil 2

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

Genau wie AND und OR vektorisierte Versionen haben, funktioniert auch der NOT-Operator elementweise auf Vektoren. Wenn du ! auf einen Vektor logischer Werte anwendest, 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 du Elemente finden möchtest, 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

Du kannst 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 hat Erlaubnis)
can_participate <- ages >= 18 | (ages < 18 & has_permission)
# TRUE TRUE FALSE TRUE TRUE

Denke daran: Verwende einzelne &, | und ! beim Arbeiten mit Vektoren und doppelte &&, || beim Vergleichen einzelner Werte.

challenge icon

Aufgabe

Einfach

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

Die folgenden Vektoren werden dir bereitgestellt:

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)

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

  1. Erstelle einen Vektor namens failed, der für jede Punktzahl, die NICHT größer oder gleich 60 ist, TRUE speichert
  2. Erstelle einen Vektor namens absent, der das Gegenteil von attended speichert (jeden Wert umkehren)
  3. Erstelle einen Vektor namens at_risk, der für jede Person, die NICHT anwesend war ODER die Hausaufgabe NICHT abgegeben hat, TRUE speichert
  4. Erstelle einen Vektor namens passing_but_absent, der für jede Person, deren Punktzahl größer oder gleich 60 ist UND die NICHT anwesend war, TRUE speichert
  5. Erstelle einen Vektor namens needs_support, der für jede Person, bei der gilt: (Punktzahl ist kleiner als 50) ODER (war NICHT anwesend UND hat die Hausaufgabe NICHT abgegeben), TRUE speichert

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

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 darunter
# 1. Erstelle 'failed' - TRUE für scores NOT >= 60

# 2. Erstelle 'absent' - Gegenteil von attended

# 3. Erstelle 'at_risk' - NOT attended OR NOT submitted homework

# 4. Erstelle 'passing_but_absent' - score >= 60 AND NOT attended

# 5. Erstelle 'needs_support' - (score < 50) OR (NOT attended AND NOT submitted homework)

# Gib die Ergebnisse aus
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

Übe selbstständig: Online-R-Compiler