Ricerca nel sito web

Come utilizzare un ciclo for in R (con esempi)


Padroneggia il ciclo for per semplificare calcoli complessi e altre operazioni ripetitive.

I cicli sono una struttura di base nella programmazione che prende un blocco di codice e lo esegue ripetutamente. I cicli for sono uno dei tipi di cicli contenuti in quasi tutti i linguaggi. Le R per i cicli sono parte integrante dell'analisi dei dati.

Servono a una varietà di scopi, dalla formattazione dell'output all'esecuzione di calcoli su set di dati di grandi dimensioni. L'uso dei cicli for in R semplifica l'esecuzione dell'analisi dei dati.

R's Basic per Loop

Il ciclo for del linguaggio R funziona in modo simile ai cicli for standard presenti in Go e nella maggior parte degli altri linguaggi di programmazione. Dato un punto di partenza, eseguirà il codice contenuto al suo interno un dato numero di volte.

Un contatore mantiene l'iterazione su cui è attualmente attivo il ciclo ed è possibile accedervi dal blocco di codice associato. I cicli possono essere eseguiti per un numero fisso di iterazioni o per la lunghezza totale di un array, vettore o elenco.

Risolti i cicli di iterazione

I cicli di iterazione fissi in R assumono la forma seguente:

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

La x nel ciclo è la variabile che memorizzerà l'iterazione del ciclo.

Dopo la parola chiave "in" ci sono i punti iniziale e finale del ciclo. Il ciclo inizierà il suo iteratore dal primo numero.

Dopo ogni esecuzione del codice nel ciclo, verrà verificato se l'iteratore è uguale al numero dopo i due punti.

In tal caso, l'esecuzione del codice continuerà dopo il ciclo. In caso contrario, l'iteratore aumenterà di 1 e il blocco di codice tra parentesi verrà eseguito nuovamente.

Per cicli su matrici, elenchi e vettori

Proprio come scorrere un dizionario in Python, puoi eseguire l'iterazione su strutture dati appropriate in R utilizzando il ciclo for. È possibile utilizzare qualsiasi struttura dati iterabile dopo la parola chiave "in", al posto di un punto iniziale e finale fisso.

Il loop in questo modo cambierà il comportamento del codice. In questo caso, il ciclo funzionerà come un ciclo foreach di linguaggi come C#:

employees <- list("Ben", "Jane", "Suzi", "Josh", "Carol")
for (x in employees) {
  print(x)
}

Ora, invece di contenere x l'iterazione corrente del ciclo, manterrà l'oggetto dall'array o dall'elenco su cui si trova attualmente il ciclo. Al termine di ogni ciclo, se sono presenti più elementi nell'elenco, nell'array o nel vettore, x verrà impostato sull'elemento successivo. Se non sono presenti più elementi, l'esecuzione continuerà con il codice dopo il ciclo.

La funzione primitiva c e i cicli for

Oltre alle strutture dati già popolate, R può comporne una nuova nella dichiarazione del ciclo for. Per fare ciò, usa la funzione c per combinare più elementi in un nuovo vettore.

Puoi semplificare l'esempio sopra usando questo metodo:

for (x in c("Ben", "Jane", "Suzi", "Josh", "Carol")) {
  print(x)
}

Tieni presente che l'output è lo stesso di prima:

Dichiarazioni di salto di R

Due istruzioni ti consentono di saltare le iterazioni del ciclo: break e next. Lo fanno in modi diversi. Dovresti assicurarti di conoscere la differenza tra i due.

La parola chiave di interruzione

Quando un ciclo incontra un'istruzione break al suo interno, chiude immediatamente il ciclo. Poiché il programma esce dal ciclo una volta che ha premuto la parola chiave break, non eseguirà nuovamente il codice rimanente:

days <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday",
 "Sunday")
for (x in days) {
  if (x == "Saturday") {
    break
  }
  print(x)
}

Il ciclo precedente stamperà tutti i giorni feriali, ma nessuno dei giorni del fine settimana.

La prossima parola chiave

Anche la parola chiave next salta un'iterazione, ma a differenza di break, next non chiude immediatamente il ciclo. Il ciclo che rimane aperto significa che qualsiasi codice aggiuntivo all'interno del ciclo corrente non verrà eseguito, ma l'iterazione successiva continuerà come previsto:

days <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday",
 "Sunday")
for (x in days) {
  if (x == "Saturday") {
    next
  }
  print(x)
}

Questo ciclo verrà visualizzato ogni giorno feriale e domenica, ma non verrà stampato sabato.

Esempio di loop in R

Esiste un'ampia varietà di situazioni in cui i cicli for sono utili in R. Possono essere un ottimo modo per eseguire calcoli ripetitivi, come aggiungere numeri per ottenere un totale:

orders <- list(23.4, 699.8, 1042.0)
total <- 0.0
for (order in orders) {
  total <- order + total
}
cat("the total is $", total, "\n")

In questo esempio verrà aggiunto il totale dell'ordine da ogni singolo ordine in un elenco al totale complessivo.

In alternativa, un ciclo for può aiutarti a generare rapidamente e facilmente grandi quantità di dati ben formattati:

day_totals <- c(567.82, 364.72, 762.81, 354.99, 622.87)
for (day in 1:length(day_totals)) {
  cat("Day #", day, ": $", day_totals[day],"\n")
   day <- day + 1
}

Puoi utilizzare un ciclo for per stampare ogni giorno della settimana e le vendite totali per quel particolare giorno.

Puoi utilizzare un ciclo for per calcolare i risultati e renderli disponibili per il codice al di fuori del ciclo for, per ottenere una varietà di informazioni:

test_scores <- c(67, 89, 72, 44)
score_total <- 0
num_tests <- 0
for (score in test_scores) {
  score_total <- score_total + score
  num_tests <- num_tests + 1
}
average_score <- score_total / num_tests
print(average_score)

Il ciclo precedente calcolerà il punteggio medio ottenuto dagli studenti in un test.

Tutto quello che devi sapere su R's for Loops

È essenziale imparare a eseguire un determinato numero di cicli o a ripetere un set di dati senza una lunghezza fissa.

Se devi eseguire calcoli ripetuti su un array, stampare ogni elemento di un elenco o mostrare una grande quantità di dati in un formato leggibile, il ciclo for di R può aiutarti.

Comprendere i principi alla base dei cicli for è un'abilità preziosa da avere nel tuo arsenale e padroneggiarla può aiutarti a scrivere codice semplice e di facile lettura.

Articoli correlati: