For-Loop v R DataFrame

For Loop V R Dataframe



For-loop je řídicí struktura, která nám umožňuje opakovat sadu instrukcí ve stanoveném počtu opakování. Je to běžně používaná metoda pro iteraci v R, zvláště když potřebujeme provést stejnou operaci na některých prvcích nebo iterovat přes datovou strukturu, jako je ta v DataFrame. Řádky a sloupce tvoří DataFrames v R, kde každý řádek představuje jedno pozorování a každý sloupec označuje proměnnou nebo aspekt tohoto pozorování.

V tomto konkrétním článku používáme for-loop k iteraci přes DataFrame různými přístupy. Uvědomte si, že iterace for-loop přes řádky a sloupce může být pro velké DataFrame vysoce výpočetní.







Příklad 1: Použití For-Loop přes řádky datového rámce v R

For-loop v R lze použít k iteraci přes řádky DataFrame. Uvnitř for-loop můžeme použít index řádku pro přístup ke každému řádku DataFrame. Podívejme se na následující R kód, který je ukázkou for-loop pro iteraci přes řádky zadaného DataFrame.



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

c2 = c(6:10),

c3 = c(11:15))

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

řádek <- data[i, ]

tisknout (řádek)

}

Zde nejprve definujeme funkci data.frame() uvnitř „data“. Funkce data.frame() zde obsahuje tři sloupce. Každý sloupec je nastaven s posloupností čísel od 1 do 5, od 6 do 10 a od 11 do 15. Poté je nasazena funkce for-loop, která iteruje přes řádky „dat“ DataFrame pomocí funkce nrow(), aby získala celkový počet řádků. Proměnná smyčky „i“ přebírá hodnoty do celého počtu řádků v „datech“.



Poté extrahujeme i-tý řádek „data“ DataFrame pomocí zápisu hranatých závorek „[ ]“. Extrahovaný řádek je uložen v proměnné „row“, kterou vytiskne funkce print().





Smyčka tedy iteruje přes všechny řádky v DataFrame a zobrazuje čísla řádků ve výstupu spolu s hodnotami sloupce.



Příklad 2: Použití For-Loop přes sloupce DataFrame

Podobně můžeme použít for-loop v R ke smyčce přes sloupce zadaného datového rámce. Můžeme použít předchozí kód k smyčkování sloupců, ale musíme použít funkci ncol() ve smyčce for. Naopak, máme nejjednodušší přístup k smyčkování přes sloupce DataFrame pomocí for-loop. Zvažte k tomu následující R kód:

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

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

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

for(col in colnames(df)) {

sloupec <- df[[col]]

tisknout (sloupec)

}

Zde nejprve vytvoříme proměnnou df, kde se použije data.frame() s vkládáním sloupců. DataFrame „df“ obsahuje tři sloupce, které obsahují číselné hodnoty. Dále použijeme for-loop k iteraci názvů sloupců datového rámce „data“ pomocí funkce colnames(). V každé iteraci převezme proměnná cyklu „col“ název aktuálního sloupce. Extrahovaný sloupec je pak uložen do nové proměnné, která je „sloupec“.

Data proměnné „column“ tedy vytisknou výstup na následující konzoli:

Příklad 3: Použití For-Loop přes celý DataFrame

V předchozích příkladech jsme procházeli sloupce a řádky pomocí smyčky for, resp. Nyní používáme vnořené cykly for k iteraci řádků i sloupců DataFrame současně. Kód R je uveden v následujícím textu, kde se ve sloupcích a řádcích používá vnořená smyčka for:

zaměstnanci <- data.frame(id=1:4,

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

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

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

for (řádek v 1:nrow(zaměstnanci)) {

for (col in 1:ncol(zaměstnanci)) {

print(paste('index řádku', řádek, 'název sloupce', sloupec, 'hodnota buňky', zaměstnanci[řádek, sloupec]))

}

}

Zde deklarujeme proměnnou „employees“, kde je volána data.frame() pro nastavení sloupců. Hodnoty v každém sloupci jsou určeny pomocí vektorů. Poté pro řádek a sloupec datového rámce „zaměstnanci“ použijeme dvě vnořené smyčky for pro iteraci dat. Vnější smyčka iteruje přes řádky zadaného DataFrame pomocí „1:nrow(employees)“. Pro každý řádek se ve vnitřní smyčce používá „1:ncol(employees)“ k opakovanému iterování přes sloupce DataFrame.

Poté máme uvnitř vnořených smyček funkci print(), která nasadí funkci paste() ke zřetězení indexu řádku, indexu sloupce a hodnoty buňky do jednoho řetězce. Výraz zaměstnanec [řádek, sloupec] zde získá hodnotu v aktuální buňce, kde řádek a sloupec jsou existující řádkové a sloupcové indexy.

Výstup na konzole je tedy načten se zřetězeným indexem řádku, indexem sloupce a hodnotou buňky do jednoho řetězce.

Příklad 4: Alternativní metoda For-Loop v R

Smyčka for je nyní v jazyce R zastaralá. Poskytuje však některé alternativní metody, které fungují stejně jako smyčka for a jsou rychlejší než smyčky for. Metoda pochází z funkcí „aplikovat rodinu“, které běží pro smyčku na pozadí a iterují přes DataFrames. Podívejme se na následující R kód, kde se funkce sapply() používá ke smyčce přes DataFrame.

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

var2=c(6:10),

var3=c(11:15),

var4=c(16:20))

dfX

sapply(dfX, součet)

Zde nejprve vytvoříme „dfX“ DataFrame voláním funkce data.frame() se dvěma sloupci, z nichž každý obsahuje číselné hodnoty. Poté vytiskneme původní „dfX“ DataFrame na konzoli. V dalším kroku použijeme funkci sapply() k iteraci poskytnutého DataFrame a získání součtu každého sloupce. Funkce sapply() přebírá obecně argumenty „x“ a „FUN“. V tomto případě X je „dfX“ DataFrame a „FUN“ je funkce sum(), která je aplikována na každý ze sloupců DataFrame.

Výsledek iterace, kterého je dosaženo pomocí funkce sapply() je dosažen na následující obrazovce. Výsledky operace součtu DataFrame jsou zobrazeny pro každý sloupec. Kromě toho můžeme pro operaci for-loop v R použít také některé další funkce „rodiny aplikací“:

Závěr

Pracujeme s for-loops, abychom iterovali řádky nebo sloupce DataFrame, abychom provedli konkrétní operaci. Smyčka for se používá jednotlivě k iteraci přes sloupce a řádky. Dále to používáme pro iteraci přes sloupce i řádky datového rámce současně. Většinu času je použití funkcí k dosažení požadovaného výsledku efektivnější. Příklad funkce Apply je uveden v posledním příkladu operace for-loop.