R Pro smyčku
Pro smyčky
Smyčka for
se používá pro iteraci po sekvenci:
Příklad
for (x in 1:10) {
print(x)
}
Toto je méně podobné for
klíčovému slovu v jiných programovacích jazycích a funguje spíše jako metoda iterátoru, kterou lze nalézt v jiných objektově orientovaných programovacích jazycích.
Pomocí for
cyklu můžeme provést sadu příkazů, jednou pro každou položku ve vektoru, poli, seznamu atd.
O seznamech a vektorech atd. se dozvíte v pozdější kapitole.
Příklad
Vytisknout každou položku v seznamu:
fruits <- list("apple", "banana", "cherry")
for (x in fruits) {
print(x)
}
Příklad
Vytiskněte počet kostek:
dice <- c(1, 2, 3, 4, 5, 6)
for (x in dice) {
print(x)
}
Smyčka for
nevyžaduje, aby byla předem nastavena indexační proměnná, jako u while
smyček.
Přestávka
Pomocí break
příkazu můžeme zastavit smyčku dříve, než projde všemi položkami:
Příklad
Zastavte smyčku na "třešni":
fruits <- list("apple", "banana", "cherry")
for (x in fruits) {
if (x == "cherry") {
break
}
print(x)
}
Smyčka se zastaví na "třešni", protože jsme se rozhodli ukončit smyčku pomocí break
příkazu, kdy
x
se rovná "třešeň" ( x ==
"cherry"
).
další
Pomocí next
příkazu můžeme přeskočit iteraci bez ukončení cyklu:
Příklad
Přeskočit "banán":
fruits <- list("apple", "banana", "cherry")
for (x in fruits) {
if (x == "banana") {
next
}
print(x)
}
Když smyčka projde „banánem“, přeskočí ji a pokračuje ve smyčce.
Yahtzee!
If .. Else v kombinaci se smyčkou For
Abychom demonstrovali praktický příklad, řekněme, že hrajeme hru Yahtzee!
Příklad
Vytisknout "Yahtzee!" Pokud je počet kostek 6:
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"))
}
}
Pokud smyčka dosáhne hodnot v rozmezí 1 až 5, vypíše „No Yahtzee“ a jeho číslo. Když dosáhne hodnoty 6, vypíše "Yahtzee!" a jeho číslo.
Vnořené smyčky
Smyčku můžete mít také uvnitř smyčky:
Příklad
Vytiskněte přídavné jméno každého ovoce v seznamu:
adj <- list("red", "big", "tasty")
fruits <- list("apple", "banana",
"cherry")
for (x in adj) {
for (y in fruits) {
print(paste(x, y))
}
}