R Academy · Les

Logische operatoren en booleaanse logica

Begrijp &, |, !, xor(), any() en all() voor booleaanse bewerkingen.

Les 2 van 413 stappen

Logische operatoren en booleaanse logica is een gratis R Academy-les op CoddyKit. Dit is les 2 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject R Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus R Academy bevat in totaal 4 lessen.

Inleiding tot booleaanse logica

Booleaanse logica vormt de basis voor besluitvorming in programmeren. In R zijn logische waarden TRUE en FALSE. Logische operatoren combineren deze waarden tot complexe voorwaarden.

# 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), '
')

Elementgewijze AND met &

De operator & voert elementgewijze AND uit op vectoren. De operator geeft alleen TRUE terug wanneer beide overeenkomstige elementen TRUE zijn. Elk element in een vector wordt verwerkt.

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, '
')

Elementgewijze OR met |

De operator | voert elementgewijze OR uit. De operator geeft TRUE terug wanneer minstens één van de overeenkomstige elementen TRUE is.

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, '
')

Logische NOT met !

De operator ! ontkent een logische waarde en verandert TRUE in FALSE en omgekeerd. Deze operator wordt in de evaluatievolgorde vóór & en | toegepast.

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), '
')

Scalaire AND met &&

&& is de scalaire variant van AND — alleen het eerste element van elke vector wordt geëvalueerd, met kortsluitingsevaluatie: als de linkerkant FALSE is, wordt de rechterkant nooit geëvalueerd.

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, '
')

Scalaire OR met ||

|| is de scalaire variant van OR met kortsluitingsevaluatie: als de linkerkant TRUE is, wordt de rechterkant nooit geëvalueerd. Gebruik || in if-instructies wanneer je slechts één resultaat nodig hebt.

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, '
')

Exclusieve OR met xor()

xor(x, y) geeft TRUE terug wanneer precies één van x of y TRUE is. De functie geeft FALSE terug wanneer ze hetzelfde zijn. Dit is nuttig voor schakel-logica.

# 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() en all()

any() geeft TRUE terug als minstens één element TRUE is. all() geeft alleen TRUE terug als elk element TRUE is. Beide reduceren een logische vector tot één waarde.

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 combineren

Je kunt meerdere logische operatoren aaneenschakelen om complexe voorwaarden op te bouwen. R evalueert eerst !, daarna & en vervolgens |. Gebruik haakjes om je bedoeling duidelijk te maken.

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 op gegevensframes

Logische operatoren komen goed van pas bij het filteren van gegevensframes. Je kunt meerdere voorwaarden combineren om precies de rijen te selecteren die je nodig hebt.

# 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], '
')

Booleaanse rekenkunde

In R wordt TRUE bij rekenkundige bewerkingen behandeld als 1 en FALSE als 0. Daardoor kun je sum() gebruiken om TRUE-waarden te tellen en mean() om de verhouding te berekenen.

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), '
')

Korte controle

Wat is in R het verschil tussen & en &&?

Herhaling: booleaanse logica in R

Uitstekend! Dit zijn de belangrijkste punten uit deze les:

  • & en | zijn gevectoriseerd — ze vergelijken elementen één voor één
  • && en || zijn scalair en gebruiken kortsluitingsevaluatie — gebruik ze in if-instructies
  • ! ontkent een logische waarde
  • xor() geeft TRUE terug wanneer precies één argument TRUE is
  • any() en all() reduceren logische vectoren tot één waarde
  • TRUE == 1 en FALSE == 0, dus je kunt logische vectoren optellen of middelen
# 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), '
')
Gratis beginnen

Leer R met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
43
Lessen
159

Veelgestelde vragen

Is de les “Logische operatoren en booleaanse logica” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad R Academy, waaronder “Logische operatoren en booleaanse logica”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus R Academy bevat in totaal 4 lessen.

Wat leer ik in “Logische operatoren en booleaanse logica”?

Begrijp &, |, !, xor(), any() en all() voor booleaanse bewerkingen. Je oefent met R Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met R Academy te beginnen?

Ervaring vooraf is niet nodig. R Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.

Hoe lang duurt de les “Logische operatoren en booleaanse logica”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over R Academy?

Ja. Elke les over R Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Rekenkundige en vergelijkingsoperatoren
  2. Logische operatoren en booleaanse logica
  3. Toewijzings- en speciale operatoren
  4. Operatorprioriteit en complexe expressies
← Terug naar R Academy