Logische Operatoren und boolesche Logik
Verstehen Sie &, |, !, xor(), any() und all() für boolesche Operationen.
Logische Operatoren und boolesche Logik ist eine kostenlose R Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des R Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der R Academy-Kurs umfasst insgesamt 4 Lektionen.
Einführung in die boolesche Logik
Boolesche Logik bildet die Grundlage für Entscheidungen in der Programmierung. In R heißen logische Werte TRUE und FALSE. Logische Operatoren kombinieren diese Werte zu komplexen Bedingungen.
# Boolean values in R
is_raining <- TRUE
is_cold <- FALSE
cat('Is raining:', is_raining, '
')
cat('Is cold:', is_cold, '
')
cat('Class:', class(is_raining), '
')Elementweises AND mit &
Der Operator & führt ein elementweises AND auf Vektoren aus. Er gibt nur dann TRUE zurück, wenn beide entsprechenden Elemente TRUE sind. Dabei wird jedes Element eines Vektors verarbeitet.
ages <- c(15, 22, 17, 30, 19)
has_id <- c(FALSE, TRUE, FALSE, TRUE, TRUE)
# Can buy alcohol? (must be 18+ AND have ID)
can_buy <- (ages >= 18) & has_id
cat('Ages >= 18:', ages >= 18, '
')
cat('Has ID:', has_id, '
')
cat('Can buy:', can_buy, '
')Elementweises OR mit |
Der Operator | führt ein elementweises OR aus. Er gibt TRUE zurück, wenn mindestens eines der entsprechenden Elemente TRUE ist.
scores_math <- c(85, 45, 72, 38, 90)
scores_english <- c(40, 88, 65, 70, 55)
# Pass if either subject >= 60
passes <- (scores_math >= 60) | (scores_english >= 60)
cat('Math pass:', scores_math >= 60, '
')
cat('English pass:', scores_english >= 60, '
')
cat('Overall pass:', passes, '
')Logisches NOT mit !
Der Operator ! negiert einen logischen Wert und wandelt TRUE in FALSE und umgekehrt um. Er wird bei der Auswertung vor & und | angewendet.
is_weekend <- c(TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE)
cat('Is weekend:', is_weekend, '
')
cat('Is weekday:', !is_weekend, '
')
# Count weekdays
cat('Number of weekdays:', sum(!is_weekend), '
')Skalares AND mit &&
&& ist die skalare Variante von AND: Es wird nur das erste Element jedes Vektors ausgewertet. Dabei kommt eine Auswertung mit Kurzschluss zum Einsatz: Ist die linke Seite FALSE, wird die rechte Seite nie ausgewertet.
x <- 10
# Short-circuit: second condition skipped if first is FALSE
if (x > 0 && x < 100) {
cat('x is a positive double-digit or less
')
}
# && only looks at first element
cat('TRUE && FALSE:', TRUE && FALSE, '
')
cat('TRUE & FALSE (vectorised):', TRUE & FALSE, '
')Skalares OR mit ||
|| ist die skalare Variante von OR mit Auswertung per Kurzschluss: Ist die linke Seite TRUE, wird die rechte Seite nie ausgewertet. Verwenden Sie || in if-Anweisungen, wenn Sie nur ein einzelnes Ergebnis benötigen.
user_role <- 'admin'
# Short-circuit OR — stops at first TRUE
if (user_role == 'admin' || user_role == 'superuser') {
cat('Access granted
')
} else {
cat('Access denied
')
}
cat('FALSE || TRUE:', FALSE || TRUE, '
')Exklusives OR mit xor()
xor(x, y) gibt TRUE zurück, wenn genau eines von x oder y TRUE ist. Sind beide Werte gleich, wird FALSE zurückgegeben. Dies ist beispielsweise für Umschaltlogik nützlich.
# xor truth table
cat('xor(TRUE, TRUE):', xor(TRUE, TRUE), '
') # FALSE
cat('xor(TRUE, FALSE):', xor(TRUE, FALSE), '
') # TRUE
cat('xor(FALSE, TRUE):', xor(FALSE, TRUE), '
') # TRUE
cat('xor(FALSE, FALSE):', xor(FALSE, FALSE), '
') # FALSE
# Practical: exactly one sensor triggered
sensor_a <- c(TRUE, FALSE, TRUE, FALSE)
sensor_b <- c(FALSE, FALSE, TRUE, TRUE)
cat('Exactly one sensor:', xor(sensor_a, sensor_b), '
')any() und all()
any() gibt TRUE zurück, wenn mindestens ein Element TRUE ist. all() gibt nur dann TRUE zurück, wenn jedes Element TRUE ist. Beide Funktionen reduzieren einen logischen Vektor auf einen einzelnen Wert.
temperatures <- c(22.1, 24.5, 19.8, 31.2, 28.0)
cat('Any temperature above 30?', any(temperatures > 30), '
')
cat('All temperatures above 15?', all(temperatures > 15), '
')
cat('All temperatures above 25?', all(temperatures > 25), '
')
# Useful for data validation
test_scores <- c(78, 85, 92, 88, 76)
cat('All passed (>=60)?', all(test_scores >= 60), '
')Logische Operatoren kombinieren
Sie können mehrere logische Operatoren verketten, um komplexe Bedingungen zu erstellen. R wertet zuerst !, dann & und anschließend | aus. Verwenden Sie Klammern, um Ihre Absicht deutlich zu machen.
age <- 25
income <- 55000
credit_score <- 720
# Loan eligibility: age 21-65, income >= 40000, credit >= 700
eligible <- (age >= 21 && age <= 65) &&
(income >= 40000) &&
(credit_score >= 700)
cat('Loan eligible:', eligible, '
')Logische Operatoren auf Data Frames
Logische Operatoren spielen ihre Stärken beim Filtern von Data Frames aus. Sie können mehrere Bedingungen kombinieren, um genau die benötigten Zeilen auszuwählen.
# Simple data frame
names_vec <- c('Alice', 'Bob', 'Carol', 'Dave', 'Eve')
ages_vec <- c(28, 35, 22, 45, 31)
salaries <- c(55000, 72000, 38000, 90000, 61000)
# Filter: age 25-40 AND salary above 50000
mask <- (ages_vec >= 25 & ages_vec <= 40) & (salaries > 50000)
cat('Matching employees:', names_vec[mask], '
')Boolesche Arithmetik
In R wird TRUE in arithmetischen Ausdrücken als 1 und FALSE als 0 behandelt. Daher können Sie mit sum() die TRUE-Werte zählen und mit mean() ihren Anteil bestimmen.
responses <- c(TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, FALSE, TRUE)
cat('Number of TRUE:', sum(responses), '
')
cat('Proportion TRUE:', mean(responses), '
')
cat('Percentage:', mean(responses) * 100, '%
')
# Count values meeting a condition
scores <- c(88, 45, 92, 61, 73, 55, 84)
cat('Number passing (>=60):', sum(scores >= 60), '
')Kurzer Test
Was ist in R der Unterschied zwischen & und &&?
Wiederholung: Boolesche Logik in R
Ausgezeichnet! Hier sind die wichtigsten Erkenntnisse aus dieser Lektion:
&und|sind vektorisiert – sie vergleichen Elemente einzeln&&und||sind skalar und verwenden eine Auswertung mit Kurzschluss – verwenden Sie sie inif-Anweisungen!negiert einen logischen Wertxor()gibtTRUEzurück, wenn genau ein ArgumentTRUEistany()undall()reduzieren logische Vektoren auf einen einzelnen WertTRUE == 1undFALSE == 0, daher können Sie logische Vektoren summieren oder mitteln
# Summary: all logical operators at a glance
x <- c(TRUE, FALSE, TRUE)
y <- c(TRUE, TRUE, FALSE)
cat('x & y :', x & y, '
')
cat('x | y :', x | y, '
')
cat('!x :', !x, '
')
cat('xor :', xor(x, y), '
')
cat('any(x):', any(x), '
')
cat('all(x):', all(x), '
')Häufig gestellte Fragen
Ist die Lektion „Logische Operatoren und boolesche Logik“ kostenlos?
Ja — der vollständige Text von „Logische Operatoren und boolesche Logik“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des R Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der R Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Logische Operatoren und boolesche Logik“?
Verstehen Sie &, |, !, xor(), any() und all() für boolesche Operationen. Du übst R Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um R Academy zu starten?
Keine Vorkenntnisse erforderlich. R Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Logische Operatoren und boolesche Logik“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser R Academy-Lektion Code schreiben und ausführen?
Ja. Jede R Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Arithmetische und Vergleichsoperatoren
- Logische Operatoren und boolesche Logik
- Zuweisungs- und spezielle Operatoren
- Operatorrangfolge und komplexe Ausdrücke