For-Loop in R DataFrame

For Loop In R Dataframe



Il ciclo for è una struttura di controllo che ci consente di ripetere un insieme di istruzioni per un determinato numero di volte. È un metodo comunemente usato per l'iterazione in R, specialmente quando dobbiamo eseguire la stessa operazione su alcuni elementi o iterare su una struttura dati come quella nel DataFrame. Righe e colonne costituiscono i DataFrames in R dove ogni riga rappresenta una singola osservazione e ogni colonna denota una variabile o un aspetto di tale osservazione.

Con questo particolare articolo, usiamo un ciclo for per scorrere il DataFrame in diversi approcci. Tieni presente che l'iterazione del ciclo for tra righe e colonne può essere altamente computazionale per DataFrame di grandi dimensioni.







Esempio 1: utilizzo di For-Loop su righe DataFrame in R

Il ciclo for in R può essere utilizzato per scorrere le righe di un DataFrame. All'interno del ciclo for, possiamo utilizzare l'indice di riga per accedere a ciascuna riga del DataFrame. Consideriamo il seguente codice R che è la dimostrazione del ciclo for per iterare sulle righe del DataFrame specificato.



dati = dati.frame(c1 = c(1:5),

c2 = c(6:10),

c3 = c(11:15))

for(i in 1:nrow(dati)) {

riga <- dati[i, ]

stampa (riga)

}

Qui, per prima cosa definiamo la funzione data.frame() all'interno dei 'dati'. La funzione data.frame() qui contiene tre colonne. Ogni colonna è impostata con una sequenza di numeri rispettivamente da 1 a 5, da 6 a 10 e da 11 a 15. Successivamente, viene distribuita la funzione for-loop che itera sulle righe dei 'dati' DataFrame utilizzando la funzione nrow() per ottenere il numero totale di righe. La variabile di ciclo, 'i', assume i valori per l'intero numero di righe in 'dati'.



Poi, estraiamo la i-esima riga del DataFrame “data” usando la notazione tra parentesi quadre “[ ]”. La riga estratta viene memorizzata in una variabile 'riga' che verrà stampata dalla funzione print().





Quindi, il ciclo itera su tutte le righe nel DataFrame e visualizza i numeri di riga nell'output insieme ai valori della colonna.



Esempio 2: utilizzo di For-Loop su colonne DataFrame

Allo stesso modo, possiamo usare il ciclo for in R per eseguire il ciclo sulle colonne del dataframe specificato. Possiamo usare il codice precedente per scorrere le colonne ma dobbiamo usare la funzione ncol() nel ciclo for. Al contrario, abbiamo l'approccio più semplice per eseguire il looping sulle colonne del DataFrame utilizzando for-loop. Considera il seguente codice R per questo:

df = data.frame(col1 = c(10, 20, 30, 40, 50),

col2 = c(11, 21, 31, 41, 51),

col3 = c(12, 22, 32, 42, 52))

for(col in colnames(df)) {

colonna <- df[[col]]

stampa(colonna)

}

Qui, per prima cosa creiamo la variabile df dove viene impiegato data.frame() con l'inserimento delle colonne. Il DataFrame 'df' contiene tre colonne che contengono valori numerici. Successivamente, usiamo un ciclo for per iterare sui nomi delle colonne del DataFrame 'data' usando la funzione colnames(). In ogni iterazione, la variabile di ciclo 'col' assume il nome della colonna corrente. La colonna estratta viene quindi memorizzata in una nuova variabile che è 'colonna'.

Pertanto, i dati della variabile 'colonna' stampano l'output sulla seguente console:

Esempio 3: utilizzo di For-Loop sull'intero dataframe

Negli esempi precedenti, abbiamo eseguito il ciclo sulle colonne e sulle righe utilizzando rispettivamente il ciclo for. Ora usiamo i cicli for nidificati per iterare simultaneamente sia sulle righe che sulle colonne di un DataFrame. Il codice di R è fornito di seguito in cui il ciclo for nidificato viene utilizzato sulle colonne e sulle righe:

impiegati <- data.frame(id=1:4,

nomi=c('kim', 'John', 'Ian', 'Mark'),

location=c('Australia', 'America', 'Canada', 'Giordania'),

stipendio=c(2000, 1800, 1500, 1000))

for (riga in 1:nrow(dipendenti)) {

for (col in 1:ncol(dipendenti)) {

print(paste('Indice riga', riga, 'nome colonna', colonna, 'valore cella', impiegati[riga, colonna]))

}

}

Qui, dichiariamo la variabile 'employees' in cui viene chiamato data.frame() per impostare le colonne. I valori in ogni colonna sono specificati utilizzando i vettori. Quindi, per la riga e la colonna del DataFrame 'dipendenti', utilizziamo due cicli for nidificati per scorrere i dati. Il ciclo esterno itera sulle righe del DataFrame specificato utilizzando '1:nrow(employees)'. Per ogni riga, '1:ncol(employees)' viene utilizzato nel ciclo interno per iterare ripetutamente sulle colonne del DataFrame.

Successivamente, abbiamo una funzione print() all'interno dei cicli nidificati che distribuisce la funzione paste() per concatenare l'indice di riga, l'indice di colonna e il valore della cella in una singola stringa. L'espressione impiegato [riga, col] qui ottiene il valore nella cella corrente dove riga e colonna sono rispettivamente gli indici di riga e colonna esistenti.

Pertanto, l'output sulla console viene recuperato con l'indice di riga concatenato, l'indice di colonna e il valore di cella in un'unica stringa.

Esempio 4: metodo alternativo For-Loop in R

Il ciclo for è ora obsoleto nel linguaggio R. Tuttavia, fornisce alcuni metodi alternativi che funzionano allo stesso modo del ciclo for e sono più veloci dei cicli for. Il metodo proviene dalle funzioni 'apply family' che vengono eseguite in loop in background per eseguire iterazioni su DataFrames. Consideriamo il seguente codice R in cui la funzione sapply() viene utilizzata per eseguire il ciclo su DataFrame.

dfX <- data.frame(var1=c(1:5),

var2=c(6:10),

var3=c(11:15),

var4=c(16:20))

dfX

sapply(dfX, somma)

Qui, per prima cosa stabiliamo il DataFrame 'dfX' chiamando la funzione data.frame() con due colonne, ciascuna contenente valori numerici. Quindi stampiamo il DataFrame 'dfX' originale sulla console. Nel passaggio successivo, usiamo la funzione sapply() per scorrere il DataFrame fornito e ottenere la somma di ogni colonna. La funzione sapply() accetta gli argomenti 'x' e 'FUN' in generale. In questo caso, X è il DataFrame 'dfX' e 'FUN' è la funzione sum() applicata a ciascuna delle colonne del DataFrame.

Il risultato dell'iterazione ottenuto tramite la funzione sapply() si ottiene nella schermata seguente. I risultati dell'operazione di somma di DataFrame vengono visualizzati per ogni colonna. Inoltre, possiamo anche utilizzare alcune altre funzioni della 'famiglia di applicazioni' per l'operazione for-loop in R:

Conclusione

Lavoriamo con cicli for per iterare sulle righe o colonne del DataFrame per eseguire un'operazione specifica. Il ciclo for viene utilizzato individualmente per iterare sulle colonne e sulle righe. Inoltre, lo usiamo per l'iterazione su colonne e righe del dataframe contemporaneamente. La maggior parte delle volte, l'applicazione di funzioni per ottenere il risultato desiderato è più efficace. L'esempio della funzione apply è fornito nell'ultimo esempio sull'operazione for-loop.