Direct naar de hoofdinhoud
Module 2 · Les 2 van 24/10 in de cursus~12 min
Modulelessen (2/2)

Voorwaardelijke regels en lussen

Om complexe algoritmen en procedures in R te implementeren, moet u kunnen bepalen welke instructies u moet uitvoeren en hoe vaak u deze moet herhalen.

Voorwaardelijke verklaringen

In R is de fundamentele voorwaardelijke structuur gebaseerd op if en else. De syntaxis lijkt sterk op talen als JavaScript of C:

R
score <- 85

if (score >= 60) {
  print("Passed!")
} else {
  print("Failed.")
}

Accolades {} definiëren de codeblokken die moeten worden uitgevoerd, afhankelijk van de uitkomst van de Booleaanse expressie tussen haakjes.

De for lus

De for lus in R wordt gebruikt om elementen in een reeks te herhalen (zoals een vector of lijst).

R
# Print numbers from 1 to 3
for (i in 1:3) {
  print(i)
}

In R is de syntaxis 1:3 een verkorte manier om de vector c(1, 2, 3) te maken.

We kunnen ook rechtstreeks over de elementen van een bestaande vector lopen:

R
fruits <- c("apple", "banana", "cherry")

for (fruit in fruits) {
  print(fruit)
}

De functie ifelse

In R is de functie ifelse() een gevectoriseerde versie van de instructie if-else. Hiermee kunt u in één bewerking een voorwaarde op een gehele vector toepassen, waardoor een vector met resultaten wordt geretourneerd.

R
scores <- c(55, 80, 45, 90)
# Se score >= 60 assegna "Pass", altrimenti "Fail"
results <- ifelse(scores >= 60, "Pass", "Fail")
print(results) # "Fail" "Pass" "Fail" "Pass"

De while lus

De lus while wordt gebruikt om een ​​codeblok te herhalen zolang een specifieke voorwaarde waar blijft (TRUE). Het is essentieel om ervoor te zorgen dat de voorwaarde uiteindelijk onwaar wordt om oneindige lussen te voorkomen.

R
counter <- 1
while (counter <= 3) {
  print(counter)
  counter <- counter + 1
}

Probeer het zelf

Oefening#r.m2.l2.e1
Pogingen: 0Laden…

Schrijf een if-else voorwaardelijke verklaring die controleert of de variabele score groter is dan of gelijk is aan 60. Als dit het geval is, stelt u de status in op 'Pass', anders op 'Fail'.

Editor laden…
Toon hint

Verifica score >= 60 e assegna status <- 'Pass' o status <- 'Fail'

Oplossing beschikbaar na 3 pogingen

Oefening#r.m2.l2.e2
Pogingen: 0Laden…

Schrijf een for-lus die de reeks 1:5 herhaalt en elke waarde afdrukt met behulp van de print()-functie.

Editor laden…
Toon hint

Usa la sintassi: voor (i in 1:5) { print(i) }

Oplossing beschikbaar na 3 pogingen

Oefening#r.m2.l2.e3
Pogingen: 0Laden…

Gegeven de vector v, schrijf een for-lus die over elk element itereert en het dubbele (val * 2) afdrukt met behulp van print().

Editor laden…
Toon hint

Loop door elementen van v: for (val in v) { print(val * 2) }

Oplossing beschikbaar na 3 pogingen

Oefening#r.m2.l2.e4
Pogingen: 0Laden…

Gebruik, gegeven de vectorscores, de functie ifelse() om te controleren welke elementen groter dan of gelijk zijn aan 60. Bewaar het resultaat (dat voor elk element 'Pass' of 'Fail' bevat) in de variabele resultaten.

Editor laden…
Toon hint

Gebruik de functie: resultaten <- ifelse(scores >= 60, 'Pass', 'Fail')

Oplossing beschikbaar na 3 pogingen

Oefening#r.m2.l2.e5
Pogingen: 0Laden…

Gebruik een while-lus om de waarde van x te verdubbelen totdat deze groter is dan 50. Verhoog ook de tellervariabele bij elke iteratie.

Editor laden…
Toon hint

Gebruik een while-lus (x <= 50) en update zowel x als counter binnen de accolades.

Oplossing beschikbaar na 3 pogingen