For-Loop în R DataFrame

For Loop In R Dataframe



Bucla for este o structură de control care ne permite să repetăm ​​un set de instrucțiuni într-un anumit număr de ori. Este o metodă folosită în mod obișnuit pentru iterare în R, mai ales atunci când trebuie să efectuăm aceeași operație pe unele elemente sau să iterăm peste o structură de date, cum ar fi cea din DataFrame. Rândurile și coloanele formează DataFrames-urile din R, unde fiecare rând reprezintă o singură observație și fiecare coloană denotă o variabilă sau un aspect al acelei observații.

Cu acest articol special, folosim o buclă for pentru a repeta peste DataFrame în diferite abordări. Rețineți că iterația for-loop pe rânduri și coloane poate fi foarte computațională pentru DataFrames mari.







Exemplul 1: Utilizarea For-Loop peste rândurile DataFrame în R

Bucla for din R poate fi folosită pentru a repeta peste rândurile unui DataFrame. În interiorul buclei for, putem folosi indexul de rând pentru a accesa fiecare rând al DataFrame. Să luăm în considerare următorul cod R, care este demonstrația for-loop pentru a repeta peste rândurile DataFrame-ului specificat.



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

c2 = c(6:10),

c3 = c(11:15))

pentru(i în 1:nrow(date)) {

rând <- date[i, ]

imprimare(rând)

}

Aici, definim mai întâi funcția data.frame() în interiorul „date”. Funcția data.frame() conține aici trei coloane. Fiecare coloană este setată cu o secvență de numere de la 1 la 5, de la 6 la 10 și, respectiv, de la 11 la 15. După aceea, este implementată funcția for-loop care iterează peste rândurile „date” DataFrame folosind funcția nrow() pentru a obține numărul total de rânduri. Variabila buclă, „i”, preia valorile pentru întregul număr de rânduri din „date”.



Apoi, extragem rândul i al „datelor” DataFrame folosind notația „[ ]” dintre paranteze drepte. Rândul extras este stocat într-o variabilă „rând” care va fi imprimată de funcția print().





Prin urmare, bucla iterează peste toate rândurile din DataFrame și afișează numerele rândurilor din ieșire împreună cu valorile coloanei.



Exemplul 2: Utilizarea coloanelor For-Loop Over DataFrame

În mod similar, putem folosi bucla for din R pentru a trece peste coloanele cadrului de date specificat. Putem folosi codul anterior pentru a bucla peste coloane, dar trebuie să folosim funcția ncol() în bucla for. În schimb, avem cea mai simplă abordare a buclei peste coloanele DataFrame folosind for-loop. Luați în considerare următorul cod R pentru aceasta:

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 în colnames(df)) {

coloana <- df[[col]]

imprimare (coloană)

}

Aici, mai întâi creăm variabila df unde data.frame() este folosită cu inserarea coloanelor. DataFrame „df” conține trei coloane care conțin valori numerice. Apoi, folosim o buclă for pentru a repeta peste numele coloanelor DataFrame-ului „date” folosind funcția colnames(). În fiecare iterație, variabila buclă „col” ia numele coloanei curente. Coloana extrasă este apoi stocată într-o nouă variabilă care este „coloană”.

Astfel, datele variabilei „coloană” imprimă rezultatul pe următoarea consolă:

Exemplul 3: Utilizarea For-Loop peste întregul DataFrame

În exemplele anterioare, am trecut în buclă peste coloane și rânduri folosind, respectiv, bucla for. Acum, folosim buclele for imbricate pentru a itera atât pe rândurile, cât și pe coloanele unui DataFrame, simultan. Codul lui R este furnizat în cele ce urmează, unde bucla for imbricată este utilizată peste coloane și rânduri:

angajați <- data.frame(id=1:4,

nume=c('kim', 'Ioan', 'Ian', 'Mark'),

locație=c(„Australia”, „America”, „Canada”, „Iordania”)

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

pentru (rând în 1:nrow(angajați)) {

pentru (col în 1:ncol(angajați)) {

print(paste('Index de rând', rând, 'numele coloanei', col, 'valoarea celulei', angajaţi[rând, col]))

}

}

Aici, declarăm variabila „angajați” unde este apelată data.frame() pentru a seta coloanele. Valorile din fiecare coloană sunt specificate folosind vectori. Apoi, pentru rândul și coloana DataFrame-ului „angajați”, folosim două bucle for imbricate pentru a repeta peste date. Bucla exterioară iterează peste rândurile DataFrame-ului specificat folosind „1:nrow(employees)”. Pentru fiecare rând, „1:ncol(angajați)” este folosit în bucla interioară pentru a repeta în mod repetat peste coloanele DataFrame.

După aceea, avem o funcție print() în buclele imbricate care implementează funcția paste() pentru a concatena indexul rândului, indexul coloanei și valoarea celulei într-un singur șir. Expresia angajat [rând, col] primește aici valoarea din celula curentă, unde rândul și coloana sunt indicii de rând și, respectiv, de coloană existenți.

Astfel, ieșirea de pe consolă este preluată cu indexul rândului concatenat, indexul coloanei și valoarea celulei într-un singur șir.

Exemplul 4: Metoda alternativă pentru buclă în R

Bucla for este acum depășită în limbajul R. Cu toate acestea, oferă câteva metode alternative care funcționează la fel ca bucla for și sunt mai rapide decât bucla for. Metoda provine din funcțiile „aplica familia” care rulează for-loop în fundal pentru a itera peste DataFrames. Să luăm în considerare următorul cod R în care funcția sapply() este utilizată pentru a bucla peste DataFrame.

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

var2=c(6:10),

var3=c(11:15),

var4=c(16:20))

dfX

sapply(dfX, suma)

Aici, stabilim mai întâi DataFrame „dfX” apelând funcția data.frame() cu două coloane, fiecare conținând valori numerice. Apoi imprimăm DataFrame-ul original „dfX” pe consolă. În pasul următor, folosim funcția sapply() pentru a itera peste DataFrame furnizat și a obține suma fiecărei coloane. Funcția sapply() preia argumentele „x” și „FUN” în general. În acest caz, X este „dfX” DataFrame, iar „FUN” este funcția sum() care este aplicată fiecărei coloane din DataFrame.

Rezultatul iterației care se obține prin funcția sapply() este obținut în următorul ecran. Rezultatele operației de sumă ale DataFrame sunt afișate pentru fiecare coloană. Mai mult, putem folosi și alte funcții ale „familiei de aplicații” pentru operația for-loop în R:

Concluzie

Lucrăm cu bucle for pentru a itera pe rândurile sau coloanele DataFrame pentru a efectua o anumită operație. Bucla for este utilizată individual pentru a itera coloanele și rândurile. Mai mult, folosim acest lucru pentru iterație pe ambele coloane și rânduri ale cadrului de date în același timp. De cele mai multe ori, aplicarea funcțiilor pentru a obține rezultatul dorit este mai eficientă. Exemplul funcției de aplicare este dat în ultimul exemplu asupra operației for-loop.