Come creare un ciclo for annidato in r (compresi gli esempi)
Un ciclo for nidificato consente di scorrere elementi in più vettori (o più dimensioni di una matrice) ed eseguire determinate operazioni.
La struttura di base di un ciclo for in R è:
for (i in 1:4) { print (i) } [1] 1 [1] 2 [1] 3 [1] 4
E la struttura di base di un ciclo for nidificato è:
for (i in 1:4) { for (j in 1:2) { print (i*j) } } [1] 1 [1] 2 [1] 2 [1] 4 [1] 3 [1] 6 [1] 4 [1] 8
Questo tutorial mostra alcuni esempi di creazione di cicli for nidificati in R.
Esempio 1: ciclo For annidato in R
Il codice seguente mostra come utilizzare un ciclo for nidificato per riempire i valori di una matrice 4×4:
#create matrix
empty_mat <- matrix(nrow= 4 , ncol= 4 )
#view empty matrix
empty_mat
[,1] [,2] [,3] [,4]
[1,] NA NA NA NA
[2,] NA NA NA NA
[3,] NA NA NA NA
[4,] NA NA NA NA
#use nested for loop to fill in values of matrix
for (i in 1:4) {
for (j in 1:4) {
empty_mat[i, j] = (i*j)
}
}
#view matrix
empty_mat
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 2 4 6 8
[3,] 3 6 9 12
[4,] 4 8 12 16
Esempio 2: ciclo For nidificato in R
Il codice seguente mostra come utilizzare un ciclo for annidato per quadrare ogni valore in un frame di dati:
#create empty data frame
df <- data.frame(var1=c(1, 7, 4),
var2=c(9, 13, 15))
#view empty data frame
df
var1 var2
1 1 9
2 7 13
3 4 15
#use nested for loop to square each value in the data frame
for (i in 1:nrow(df)) {
for (j in 1:ncol(df)) {
df[i, j] = df[i, j]^2
}
}
#view new data frame
df
var1 var2
1 1 81
2 49 169
3 16 225
Una nota sul looping
In generale, i cicli for nidificati funzionano bene su piccoli set di dati o matrici, ma tendono ad essere piuttosto lenti con dati più grandi.
Per i big data, la famiglia di funzioni dell’applicazione tende ad essere molto più veloce e il pacchetto data.table ha molte funzioni integrate che funzionano in modo efficiente su set di dati più grandi.
Risorse addizionali
Come scorrere i nomi delle colonne in R
Come aggiungere righe a un frame di dati in R