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 TRUEJedes 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 FALSEDu 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 TRUEDenke daran: Verwende einzelne &, | und ! beim Arbeiten mit Vektoren und doppelte &&, || beim Vergleichen einzelner Werte.
Aufgabe
EinfachVerwende 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:
- Erstelle einen Vektor namens
failed, der für jede Punktzahl, die NICHT größer oder gleich 60 ist,TRUEspeichert - Erstelle einen Vektor namens
absent, der das Gegenteil vonattendedspeichert (jeden Wert umkehren) - Erstelle einen Vektor namens
at_risk, der für jede Person, die NICHT anwesend war ODER die Hausaufgabe NICHT abgegeben hat,TRUEspeichert - 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,TRUEspeichert - 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),TRUEspeichert
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)Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
4Operatoren Teil 2
Logische Operatoren (AND, OR)Logische Operatoren Teil 2 (NOT)Wiederholung – einfache LogikVektorisierte Logik Teil 1Vektorisierte Logik Teil 27Rechner zum Teilen der Rechnung
BegrüßungsnachrichtBenutzereingaben erfassen10FizzBuzz mit einer Wendung
SpielübersichtDie FizzBuzz-Funktion13Fortgeschrittene Vektoren
Vektor-Slicing und -IndizierungLogische IndizierungVektorarithmetik & RecyclingDer %in%-Operator2Variablen und Datentypen
Numerischer DatentypGanzzahliger DatentypZeichen-DatentypLogischer DatentypDatentypen überprüfenNamenskonventionenFehlende Werte: NAZusammenfassung – Variablen erstellen5Entscheidungen treffen
If-AnweisungIf - ElseWiederholung – Einfacher TaschenrechnerVerschachteltes If - Else8Schleifen
For-SchleifeWhile-SchleifeBreakNext (Continue)Wiederholung – FakultätSequenzgenerierung (seq, :)Verschachtelte SchleifenWiederholung – Dynamische Eingabe3Operatoren Teil 1
Arithmetische OperatorenGanzzahldivision und ModuloZuweisungsoperatorenRückblick – Einfache MathematikVergleichsoperatoren6Grundlegende Ein- und Ausgabe
Ausgabe mit printcat zur AusgabeAusgabe mit VariablenEingaben mit readline() lesenGrundlagen der TypkonvertierungRückblick – AltersrechnerRückblick – Wahr oder falsch9Funktionen
Eine Funktion deklarierenFunktionsargumenteRückgabewerteWiederholung – Sigma-FunktionWiederholung – ValidierungsfunktionStandardparameterwerteÜbe selbstständig: Online-R-Compiler