R per ciclo


Per i loop

Un forciclo viene utilizzato per l'iterazione su una sequenza:

Esempio

for (x in 1:10) {
  print(x)
}

Questo è meno simile alla forparola 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 forciclo possiamo eseguire un insieme di istruzioni, una volta per ogni elemento in un vettore, un array, una lista, ecc.

Imparerai le liste , i vettori , ecc in un capitolo successivo.

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 forciclo non richiede una variabile di indicizzazione da impostare in anticipo, come con i whilecicli.


Rottura

Con l' breakistruzione, 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' breakistruzione quando xè uguale a "cherry" ( x == "cherry").


Prossimo

Con l' nextistruzione, 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))
  }
}