R per ciclo
Per i loop
Un for
ciclo viene utilizzato per l'iterazione su una sequenza:
Esempio
for (x in 1:10) {
print(x)
}
Questo è meno simile alla for
parola chiave in altri linguaggi di programmazione e funziona più come un metodo iteratore che si trova in altri linguaggi di programmazione orientati agli oggetti.
Con il for
ciclo possiamo eseguire un insieme di istruzioni, una volta per ogni elemento in un vettore, un array, una lista, ecc.
Esempio
Stampa ogni elemento in un elenco:
fruits <- list("apple", "banana", "cherry")
for (x in fruits) {
print(x)
}
Esempio
Stampa il numero di dadi:
dice <- c(1, 2, 3, 4, 5, 6)
for (x in dice) {
print(x)
}
Il for
ciclo non richiede una variabile di indicizzazione da impostare in anticipo, come con i while
cicli.
Rottura
Con l' break
istruzione, possiamo interrompere il ciclo prima che abbia eseguito il ciclo di tutti gli elementi:
Esempio
Ferma il ciclo su "ciliegia":
fruits <- list("apple", "banana", "cherry")
for (x in fruits) {
if (x == "cherry") {
break
}
print(x)
}
Il ciclo si fermerà a "cherry" perché abbiamo scelto di terminare il ciclo utilizzando l' break
istruzione quando
x
è uguale a "cherry" ( x ==
"cherry"
).
Prossimo
Con l' next
istruzione, possiamo saltare un'iterazione senza terminare il ciclo:
Esempio
Salta "banana":
fruits <- list("apple", "banana", "cherry")
for (x in fruits) {
if (x == "banana") {
next
}
print(x)
}
Quando il ciclo passa "banana", lo salterà e continuerà a scorrere.
Yahtzee!
If .. Else combinato con un ciclo For
Per dimostrare un esempio pratico, diciamo che giochiamo a Yahtzee!
Esempio
Stampa "Yahtzee!" Se il numero dei dadi è 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"))
}
}
Se il ciclo raggiunge i valori compresi tra 1 e 5, stampa "No Yahtzee" e il suo numero. Quando raggiunge il valore 6, stampa "Yahtzee!" e il suo numero.
Loop nidificati
Puoi anche avere un loop all'interno di un loop:
Esempio
Stampa l'aggettivo di ogni frutto in un elenco:
adj <- list("red", "big", "tasty")
fruits <- list("apple", "banana",
"cherry")
for (x in adj) {
for (y in fruits) {
print(paste(x, y))
}
}