Corso
Padroneggia i cicli for e altre funzioni essenziali di R con il nostro corso introduttivo a R.
Ciclo su un vettore
Quando sai quante volte vuoi ripetere un'azione, un ciclo for è una buona opzione. L'idea del ciclo for è di scorrere una sequenza, un elemento alla volta, ed eseguire un'azione a ogni passaggio. Quella sequenza è spesso un vettore di numeri (come la sequenza 1:10), ma può anche essere una serie di numeri non in ordine come c(2, 5, 4, 6), o persino una sequenza di caratteri!
for (value in sequence) {
code
}
In parole povere, significa: "per ogni valore nella mia sequenza, esegui questo codice". Gli esempi potrebbero essere: "per ogni riga del mio data frame, stampa la colonna 1" oppure "per ogni parola della mia frase, verifica se quella parola è DataCamp".
Proviamo con un esempio! Per prima cosa, creerai un ciclo che stampa i valori in una sequenza da 1 a 10. Poi modificherai quel ciclo per sommare anche i valori da 1 a 10, in cui a ogni iterazione il valore successivo della sequenza viene aggiunto alla somma parziale.
Istruzioni
È stato creato per te un vettore seq. Completa il ciclo for usando seq come sequenza. Stampa value a ogni iterazione. È stata creata per te una variabile sum. Usa il ciclo per sommare i numeri in seq. A ogni iterazione, value deve essere aggiunto a sum, quindi stampa sum.
Se tutto è chiaro, prosegui con l'esercizio successivo! In caso contrario, ecco un video panoramico.
Video panoramico sui cicli for in R
Ciclo sulle righe di un data frame
Immagina che ti interessino i giorni in cui il prezzo delle azioni Apple supera 117. Se va oltre questo valore, vuoi stampare la data corrente e il prezzo dell'azione. Se hai un data frame stock con una colonna date e una colonna del prezzo di apple, potresti iterare sulle righe del data frame per farlo? Certo che sì!
Prima di farlo, nota che puoi ottenere il numero di righe del tuo data frame con nrow(stock). Poi, puoi creare una sequenza su cui ciclare con 1:nrow(stock).
for (row in 1:nrow(stock)) {
price <- stock[row, "apple"]
date <- stock[row, "date"]
if(price > 117) {
print(paste("On", date,
"the stock price was", price))
}
}
[1] "On 2016-12-21 the stock price was 117.06"
[1] "On 2016-12-27 the stock price was 117.26"
Questo mette insieme diverse cose che abbiamo imparato finora. Istruzioni if, sottoinsiemi di vettori, condizionali e cicli! Congratulazioni per tutto quello che hai imparato!
Istruzioni
stock è nel tuo workspace.
Compila gli spazi vuoti nel ciclo for per rendere vere le seguenti condizioni:
pricedeve contenere il prezzo dell'iterazione correntedatedeve contenere la data dell'iterazione corrente- Questa volta vuoi sapere se
applesupera116. - Se lo supera, stampa
dateeprice. - Se è stato sotto
116, stampa ladatee stampa che non è stato un giorno importante!
Ciclo sugli elementi di una matrice
Finora hai iterato su tipi di dato monodimensionali. Se vuoi ciclare sugli elementi di una matrice (colonne e righe), dovrai usare cicli annidati. Userai questa idea per stampare le correlazioni tra tre azioni.
Il modo più semplice per pensarci è questo: parti dalla riga 1 e ti muovi verso destra, passando per col1, col2, ... fino all'ultima colonna della riga 1. Poi scendi alla riga 2 e ripeti il processo.
my_matrix
[,1] [,2]
[1,] "r1c1" "r1c2"
[2,] "r2c1" "r2c2"
# Loop over my_matrix
for(row in 1:nrow(my_matrix)) {
for(col in 1:ncol(my_matrix)) {
print(my_matrix[row, col])
}
}
[1] "r1c1"
[1] "r1c2"
[1] "r2c1"
[1] "r2c2"
Istruzioni
La matrice di correlazione, corr, è nel tuo workspace.
- Stampa
corrper dare un'occhiata ai dati. - Completa il ciclo annidato! Dovrebbe soddisfare quanto segue:
- Il ciclo esterno deve scorrere le
rowdicorr. - Il ciclo interno deve scorrere le
coldicorr. - L'istruzione di stampa deve stampare i nomi della colonna e della riga correnti, e anche la loro correlazione.
- Il ciclo esterno deve scorrere le
Dai un'occhiata anche al nostro Tutorial sui cicli in R.

