For-Loop v R DataFrame

For Loop V R Dataframe



Zanka for je nadzorna struktura, ki nam omogoča, da nabor navodil ponovimo določeno število krat. To je pogosto uporabljena metoda za iteracijo v R, zlasti ko moramo izvesti isto operacijo na nekaterih elementih ali iteracijo po podatkovni strukturi, kot je tista v DataFrame. Vrstice in stolpci sestavljajo DataFrames v R, kjer vsaka vrstica predstavlja eno samo opazovanje, vsak stolpec pa označuje spremenljivko ali vidik tega opazovanja.

V tem posebnem članku uporabljamo zanko for za ponavljanje DataFrame v različnih pristopih. Zavedajte se, da je iteracija zanke for po vrsticah in stolpcih lahko zelo računska za velike podatkovne okvire.







Primer 1: Uporaba zanke For-Loop prek vrstic DataFrame v R

Zanko for v R lahko uporabite za ponavljanje po vrsticah DataFrame. Znotraj zanke for lahko uporabimo indeks vrstice za dostop do vsake vrstice DataFrame. Oglejmo si naslednjo kodo R, ki je predstavitev zanke for za ponavljanje po vrsticah podanega DataFrame.



podatki = podatki.okvir(c1 = c(1:5),

c2 = c(6:10),

c3 = c(11:15))

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

vrstica <- podatki[i, ]

natisni (vrstica)

}

Tukaj najprej definiramo funkcijo data.frame() znotraj »podatkov«. Funkcija data.frame() tukaj vsebuje tri stolpce. Vsak stolpec je nastavljen z zaporedjem številk od 1 do 5, od 6 do 10 oziroma od 11 do 15. Po tem se uporabi funkcija for-loop, ki s funkcijo nrow() ponovi vrstice »podatkov« DataFrame, da dobi skupno število vrstic. Spremenljivka zanke 'i' prevzame vrednosti za celotno število vrstic v 'podatkih'.



Nato ekstrahiramo i-to vrstico »podatkov« DataFrame z uporabo zapisa v oglatih oklepajih »[ ]«. Ekstrahirana vrstica je shranjena v spremenljivki 'vrstica', ki jo bo natisnila funkcija print().





Zato zanka ponovi vse vrstice v DataFrame in prikaže številke vrstic v izhodu skupaj z vrednostmi stolpca.



Primer 2: Uporaba zanke For-Loop prek stolpcev DataFrame

Podobno lahko uporabimo zanko for v R za zanko po stolpcih določenega podatkovnega okvira. Prejšnjo kodo lahko uporabimo za zanko po stolpcih, vendar moramo uporabiti funkcijo ncol() v zanki for. Nasprotno pa imamo najenostavnejši pristop za zanko po stolpcih DataFrame z uporabo zanke for. Za to upoštevajte naslednjo kodo R:

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 columnname(df)) {

stolpec <- df[[col]]

natisni (stolpec)

}

Tukaj najprej ustvarimo spremenljivko df, kjer se data.frame() uporablja z vstavljanjem stolpcev. DataFrame »df« vsebuje tri stolpce, ki vsebujejo številske vrednosti. Nato uporabimo zanko for za ponavljanje imen stolpcev podatkovnega okvira »data« s funkcijo colnames(). V vsaki ponovitvi spremenljivka zanke 'col' prevzame ime trenutnega stolpca. Izvlečeni stolpec se nato shrani v novo spremenljivko, ki je »stolpec«.

Tako podatki spremenljivke 'stolpec' natisnejo izhod na naslednjo konzolo:

Primer 3: Uporaba zanke For-Loop nad celotnim podatkovnim okvirom

V prejšnjih primerih smo z zanko for opravili zanko čez stolpce in vrstice. Zdaj uporabljamo ugnezdene zanke for za istočasno ponavljanje po vrsticah in stolpcih DataFrame. Koda R je podana v nadaljevanju, kjer se v stolpcih in vrsticah uporablja ugnezdena zanka for:

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

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

lokacija=c('Avstralija', 'Amerika', 'Kanada', 'Jordanija'),

plača=c(2000, 1800, 1500, 1000))

za (vrstica v 1:nrow(zaposleni)) {

za (stolpec v 1:ncol(zaposleni)) {

print(paste('Indeks vrstice', vrstica, 'ime stolpca', stolpec, 'vrednost celice', zaposleni[vrstica, stolpec]))

}

}

Tukaj deklariramo spremenljivko »employees«, kjer se za nastavitev stolpcev kliče data.frame(). Vrednosti v vsakem stolpcu so določene z vektorji. Nato za vrstico in stolpec DataFrame »zaposlenih« uporabimo dve ugnezdeni zanki for za ponavljanje podatkov. Zunanja zanka iterira po vrsticah navedenega DataFrame z uporabo »1:nrow(employees)«. Za vsako vrstico se v notranji zanki uporablja »1:ncol(employees)« za večkratno ponavljanje po stolpcih DataFrame.

Po tem imamo znotraj ugnezdenih zank funkcijo print(), ki uporabi funkcijo paste() za združevanje indeksa vrstice, indeksa stolpca in vrednosti celice v en sam niz. Izraz zaposlenega [vrstica, stolpec] tukaj dobi vrednost v trenutni celici, kjer sta vrstica in stolpec obstoječa indeksa vrstice oziroma stolpca.

Tako se izhod na konzoli pridobi z zvezanim indeksom vrstice, indeksom stolpca in vrednostjo celice v en sam niz.

Primer 4: alternativna metoda zanke For v R

Zanka for je zdaj zastarela v jeziku R. Vendar ponuja nekaj alternativnih metod, ki delujejo enako kot zanka for in so hitrejše od zank for. Metoda je iz funkcij »družine uporabe«, ki v ozadju izvajajo zanko for za ponavljanje podatkovnih okvirjev. Oglejmo si naslednjo kodo R, kjer se funkcija sapply() uporablja za zanko čez DataFrame.

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

var2=c(6:10),

var3=c(11:15),

var4=c(16:20))

dfX

zasnova (dfX, vsota)

Tukaj najprej vzpostavimo »dfX« DataFrame s klicem funkcije data.frame() z dvema stolpcema, od katerih vsak vsebuje številske vrednosti. Nato natisnemo originalni DataFrame »dfX« na konzolo. V naslednjem koraku uporabimo funkcijo sapply() za iteracijo po podanem DataFrame in pridobimo vsoto vsakega stolpca. Funkcija sapply() na splošno sprejme argumenta 'x' in 'FUN'. V tem primeru je X »dfX« DataFrame, »FUN« pa je funkcija sum(), ki se uporablja za vsakega od stolpcev DataFrame.

Rezultat ponovitve, ki je dosežen s funkcijo sapply(), je dosežen na naslednjem zaslonu. Rezultati operacije vsote DataFrame so prikazani za vsak stolpec. Poleg tega lahko uporabimo tudi nekatere druge funkcije 'družine aplikacij' za operacijo zanke for v R:

Zaključek

Delamo z zankami for za ponavljanje vrstic ali stolpcev DataFrame za izvedbo določene operacije. Zanka for se uporablja posamično za ponavljanje po stolpcih in vrsticah. Poleg tega to uporabljamo za iteracijo po stolpcih in vrsticah podatkovnega okvira hkrati. Večino časa je učinkovitejša uporaba funkcij za doseganje želenega rezultata. Primer funkcije apply je podan v zadnjem primeru prek operacije for-zanke.