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:
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).
# 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:
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.
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.
counter <- 1
while (counter <= 3) {
print(counter)
counter <- counter + 1
}Probeer het zelf
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'.
Toon hint
Verifica score >= 60 e assegna status <- 'Pass' o status <- 'Fail'
Oplossing beschikbaar na 3 pogingen
Schrijf een for-lus die de reeks 1:5 herhaalt en elke waarde afdrukt met behulp van de print()-functie.
Toon hint
Usa la sintassi: voor (i in 1:5) { print(i) }
Oplossing beschikbaar na 3 pogingen
Gegeven de vector v, schrijf een for-lus die over elk element itereert en het dubbele (val * 2) afdrukt met behulp van print().
Toon hint
Loop door elementen van v: for (val in v) { print(val * 2) }
Oplossing beschikbaar na 3 pogingen
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.
Toon hint
Gebruik de functie: resultaten <- ifelse(scores >= 60, 'Pass', 'Fail')
Oplossing beschikbaar na 3 pogingen
Gebruik een while-lus om de waarde van x te verdubbelen totdat deze groter is dan 50. Verhoog ook de tellervariabele bij elke iteratie.
Toon hint
Gebruik een while-lus (x <= 50) en update zowel x als counter binnen de accolades.
Oplossing beschikbaar na 3 pogingen