For-Loop v R DataFrame

For Loop V R Dataframe



For-loop je riadiaca štruktúra, ktorá nám umožňuje opakovať sadu inštrukcií v určenom počte krát. Je to bežne používaná metóda pre iteráciu v R, najmä keď potrebujeme vykonať rovnakú operáciu na niektorých prvkoch alebo iterovať cez dátovú štruktúru, ako je DataFrame. Riadky a stĺpce tvoria dátové rámce v R, kde každý riadok predstavuje jedno pozorovanie a každý stĺpec označuje premennú alebo aspekt tohto pozorovania.

V tomto konkrétnom článku používame for-loop na iteráciu cez DataFrame rôznymi prístupmi. Uvedomte si, že iterácia for-loop naprieč riadkami a stĺpcami môže byť veľmi výpočtová pre veľké dátové rámce.







Príklad 1: Použitie For-Loop cez riadky dátového rámca v R

For-loop v R možno použiť na iteráciu cez riadky DataFrame. Vo vnútri slučky for môžeme použiť index riadkov na prístup ku každému riadku DataFrame. Zoberme si nasledujúci R kód, ktorý je ukážkou for-loop na iteráciu cez riadky zadaného DataFrame.



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

c2 = c(6:10),

c3 = c(11:15))

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

riadok <- údaje[i, ]

vytlačiť (riadok)

}

Tu najskôr definujeme funkciu data.frame() vo vnútri „údajov“. Funkcia data.frame() tu obsahuje tri stĺpce. V každom stĺpci je nastavená postupnosť čísel od 1 do 5, od 6 do 10 a od 11 do 15. Potom sa nasadí funkcia for-loop, ktorá iteruje cez riadky „údajov“ DataFrame pomocou funkcie nrow(), aby získala celkový počet riadkov. Premenná cyklu „i“ preberá hodnoty do celého počtu riadkov v „údajoch“.



Potom extrahujeme i-tý riadok „údajov“ DataFrame pomocou zápisu v hranatých zátvorkách „[ ]“. Extrahovaný riadok je uložený v premennej „riadok“, ktorú vytlačí funkcia print().





Slučka teda iteruje cez všetky riadky v DataFrame a zobrazuje čísla riadkov vo výstupe spolu s hodnotami stĺpca.



Príklad 2: Použitie For-Loop cez stĺpce DataFrame

Podobne môžeme použiť for-loop v R na zacyklenie cez stĺpce zadaného dátového rámca. Na zacyklenie stĺpcov môžeme použiť predchádzajúci kód, ale musíme použiť funkciu ncol() v slučke for. Naopak, máme najjednoduchší prístup k slučkovaniu stĺpcov DataFrame pomocou for-loop. Zvážte nasledujúci R kód:

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

stĺpec2 = c(11, 21, 31, 41, 51),

stĺpec3 = c(12, 22, 32, 42, 52))

for(col in colnames(df)) {

stĺpec <- df[[col]]

vytlačiť (stĺpec)

}

Tu najprv vytvoríme premennú df, kde sa použije data.frame() s vkladaním stĺpcov. DataFrame „df“ obsahuje tri stĺpce, ktoré obsahujú číselné hodnoty. Ďalej použijeme for-loop na iteráciu názvov stĺpcov dátového rámca „data“ pomocou funkcie colnames(). V každej iterácii premenná cyklu „col“ preberá názov aktuálneho stĺpca. Extrahovaný stĺpec sa potom uloží do novej premennej, ktorá je „stĺpec“.

Údaje premennej „stĺpec“ teda vytlačia výstup na nasledujúcej konzole:

Príklad 3: Použitie For-Loop cez celý dátový rámec

V predchádzajúcich príkladoch sme prešli stĺpcami a riadkami pomocou slučky for, resp. Teraz používame vnorené cykly for na simultánne iterovanie riadkov aj stĺpcov DataFrame. Kód R je uvedený v nasledujúcom texte, kde sa vnorená slučka for používa nad stĺpcami a riadkami:

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

mená=c('kim', 'John', 'Ian', 'Mark'),

location=c('Austrália', 'Amerika', 'Kanada', 'Jordánsko'),

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

for (riadok v 1:nrow(zamestnanci)) {

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

print(paste('index riadka', riadok, 'názov stĺpca', stĺpec, 'hodnota bunky', zamestnanci[riadok, stĺpec]))

}

}

Tu deklarujeme premennú „employees“, kde sa volá funkcia data.frame() na nastavenie stĺpcov. Hodnoty v každom stĺpci sú špecifikované pomocou vektorov. Potom pre riadok a stĺpec dátového rámca „zamestnanci“ použijeme dve vnorené slučky for na iteráciu údajov. Vonkajšia slučka iteruje cez riadky zadaného DataFrame pomocou „1:nrow(zamestnanci)“. Pre každý riadok sa vo vnútornej slučke používa „1:ncol(employees)“ na opakované opakovanie stĺpcov DataFrame.

Potom máme vo vnútri vnorených slučiek funkciu print(), ktorá nasadí funkciu paste() na zreťazenie indexu riadka, indexu stĺpca a hodnoty bunky do jedného reťazca. Výraz zamestnanec [riadok, stĺpec] tu získa hodnotu v aktuálnej bunke, kde riadok a stĺpec sú existujúce indexy riadkov a stĺpcov.

Výstup na konzole sa teda načíta so zreťazeným indexom riadka, indexom stĺpca a hodnotou bunky do jedného reťazca.

Príklad 4: Alternatívna metóda For-loop v R

Cyklus for je teraz v jazyku R zastaraný. Poskytuje však niektoré alternatívne metódy, ktoré fungujú rovnako ako slučka for a sú rýchlejšie ako slučky for. Metóda pochádza z funkcií „apply family“, ktoré bežia na pozadí a iterujú cez DataFrames. Zoberme si nasledujúci R kód, kde sa funkcia sapply() používa na zacyklenie cez DataFrame.

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

var2=c(6:10),

var3=c(11:15),

var4=c(16:20))

dfX

použiť(dfX, súčet)

Tu najprv vytvoríme DataFrame „dfX“ zavolaním funkcie data.frame() s dvoma stĺpcami, z ktorých každý obsahuje číselné hodnoty. Potom vytlačíme pôvodný DataFrame „dfX“ do konzoly. V ďalšom kroku použijeme funkciu sapply() na iteráciu cez poskytnutý DataFrame a získame súčet každého stĺpca. Funkcia sapply() berie vo všeobecnosti argumenty „x“ a „FUN“. V tomto prípade X je DataFrame „dfX“ a „FUN“ je funkcia sum(), ktorá sa aplikuje na každý zo stĺpcov DataFrame.

Výsledok iterácie, ktorý sa dosiahne pomocou funkcie sapply(), sa dosiahne na nasledujúcej obrazovke. Výsledky operácie súčtu DataFrame sú zobrazené pre každý stĺpec. Okrem toho môžeme pre operáciu for-loop v R použiť aj niektoré ďalšie funkcie „rodiny aplikácií“:

Záver

Pracujeme s for-loops, aby sme iterovali cez riadky alebo stĺpce DataFrame, aby sme vykonali špecifickú operáciu. Slučka for sa používa individuálne na iteráciu cez stĺpce a riadky. Ďalej to používame na iteráciu nad stĺpcami aj riadkami dátového rámca súčasne. Väčšinu času je použitie funkcií na dosiahnutie požadovaného výsledku efektívnejšie. Príklad funkcie Apply je uvedený v poslednom príklade operácie for-loop.