R voor lus
Voor lussen
Een for
lus wordt gebruikt om een reeks te herhalen:
Voorbeeld
for (x in 1:10) {
print(x)
}
Dit lijkt minder op het for
sleutelwoord in andere programmeertalen, en werkt meer als een iteratormethode zoals gevonden in andere objectgeoriënteerde programmeertalen.
Met de for
lus kunnen we een reeks instructies uitvoeren, één keer voor elk item in een vector, array, lijst, enz.
In een later hoofdstuk leer je over lijsten en vectoren , enz.
Voorbeeld
Print elk item in een lijst:
fruits <- list("apple", "banana", "cherry")
for (x in fruits) {
print(x)
}
Voorbeeld
Print het aantal dobbelstenen:
dice <- c(1, 2, 3, 4, 5, 6)
for (x in dice) {
print(x)
}
De for
lus vereist geen indexeringsvariabele om vooraf in te stellen, zoals bij while
lussen.
Pauze
Met de break
instructie kunnen we de lus stoppen voordat deze alle items heeft doorlopen:
Voorbeeld
Stop de lus bij "cherry":
fruits <- list("apple", "banana", "cherry")
for (x in fruits) {
if (x == "cherry") {
break
}
print(x)
}
De lus stopt bij "cherry" omdat we ervoor hebben gekozen om de lus af te sluiten met het break
statement when
x
is gelijk aan "cherry" ( x ==
"cherry"
).
Volgende
Met de next
instructie kunnen we een iteratie overslaan zonder de lus te beëindigen:
Voorbeeld
Sla "banaan" over:
fruits <- list("apple", "banana", "cherry")
for (x in fruits) {
if (x == "banana") {
next
}
print(x)
}
Wanneer de lus "banaan" passeert, zal deze deze overslaan en doorgaan met de lus.
Jahtzee!
If .. Else Gecombineerd met een For Loop
Laten we, om een praktisch voorbeeld te demonstreren, zeggen dat we een spelletje Yahtzee!
Voorbeeld
Afdrukken "Yahtzee!" Als het dobbelsteennummer 6 is:
dice <- 1:6
for(x in dice) {
if (x == 6) {
print(paste("The dice number is", x, "Yahtzee!"))
} else {
print(paste("The dice number is", x, "Not Yahtzee"))
}
}
Als de lus de waarden tussen 1 en 5 bereikt, wordt "No Yahtzee" en zijn nummer afgedrukt. Wanneer het de waarde 6 bereikt, drukt het "Yahtzee!" en zijn nummer.
Geneste lussen
Je kunt ook een lus in een lus hebben:
Voorbeeld
Druk het bijvoeglijk naamwoord van elke vrucht af in een lijst:
adj <- list("red", "big", "tasty")
fruits <- list("apple", "banana",
"cherry")
for (x in adj) {
for (y in fruits) {
print(paste(x, y))
}
}