For-Loop az R DataFrame-ben

For Loop Az R Dataframe Ben



A for-loop egy olyan vezérlőstruktúra, amely lehetővé teszi, hogy egy utasításkészletet meghatározott számú alkalommal megismételjünk. Ez egy általánosan használt módszer az R-ben való iterációhoz, különösen akkor, ha ugyanazt a műveletet kell végrehajtanunk bizonyos elemeken, vagy egy adatszerkezeten, például a DataFrame-ben kell iterálnunk. Sorok és oszlopok alkotják az R adatkereteit, ahol minden sor egyetlen megfigyelést jelöl, és minden oszlop a megfigyelés egy változóját vagy aspektusát jelöli.

Ebben a cikkben for-loopot használunk a DataFrame-en való iterációhoz különböző megközelítésekben. Ne feledje, hogy a sorok és oszlopok közötti for-loop iteráció nagy adatkeretek esetén nagy számításigényű lehet.







1. példa: For-Loop Over DataFrame Rows használata R-ben

Az R-ben lévő for ciklus használható a DataFrame sorai közötti iterációra. A for cikluson belül a sorindexet használhatjuk a DataFrame egyes sorainak eléréséhez. Tekintsük a következő R kódot, amely a for-hurok demonstrációja a megadott DataFrame sorain történő iterációhoz.



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

c2 = c(6:10),

c3 = c(11:15))

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

<- adat[i, ] sor

nyomtatás (sor)

}

Itt először definiáljuk a data.frame() függvényt a „data”-ban. A data.frame() függvény itt három oszlopot tartalmaz. Minden oszlop 1-től 5-ig, 6-tól 10-ig, illetve 11-től 15-ig terjedő számsorral van beállítva. Ezt követően a for-loop függvény kerül telepítésre, amely a DataFrame „data” sorai között iterál az nrow() függvény használatával, hogy megkapja a sorok teljes számát. Az „i” hurokváltozó az „adat” sorainak teljes számát veszi fel.



Ezután kivonjuk a DataFrame „adat” i-edik sorát a „[ ]” szögletes zárójelben. A kivont sort egy „sor” változó tárolja, amelyet a print() függvény nyomtat ki.





Ennélfogva a ciklus a DataFrame összes sorában iterál, és megjeleníti a sorszámokat a kimenetben az oszlop értékeivel együtt.



2. példa: For-Loop Over DataFrame oszlopok használata

Hasonlóképpen használhatjuk a for-ciklust az R-ben, hogy a megadott adatkeret oszlopait áthurkoljuk. Használhatjuk az előző kódot az oszlopok közötti ciklushoz, de az ncol() függvényt kell használnunk a for-ciklusban. Ezzel szemben a legegyszerűbb módszerünk a DataFrame oszlopai közötti hurkolásra for-loop használatával. Ehhez vegye figyelembe a következő R kódot:

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)) {

oszlop <- df[[col]]

nyomtatás (oszlop)

}

Itt először létrehozzuk a df változót, ahol a data.frame() az oszlopok beillesztésénél használatos. A „df” DataFrame három oszlopot tartalmaz, amelyek számértékeket tartalmaznak. Ezután egy for-ciklust használunk a „data” DataFrame oszlopneveinek iterálására a colnames() függvény segítségével. Minden iterációban a „col” hurokváltozó felveszi az aktuális oszlop nevét. A kivont oszlop ezután egy új változóban kerül tárolásra, amely az „oszlop”.

Így az „oszlop” változó adatai a következő konzolon nyomtatják ki a kimenetet:

3. példa: For-Loop használata a teljes adatkereten keresztül

Az előző példákban az oszlopokat és a sorokat a for-ciklussal hurkoltuk át. Most a beágyazott ciklusokat használjuk a DataFrame soraiban és oszlopaiban történő egyidejű iterációra. Az R kódját a következőkben adjuk meg, ahol a beágyazott for-ciklust használják az oszlopok és sorok felett:

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

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

location=c('Ausztrália', 'Amerika', 'Kanada', 'Jordánia'),

fizetés=c(2000, 1800, 1500, 1000))

for (1. sor:nrow(alkalmazottak)) {

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

print(paste('Sor index', sor, 'oszlop neve', col, 'cellaérték', alkalmazottak[sor, oszlop]))

}

}

Itt deklaráljuk az „employees” változót, ahol a data.frame() meghívásra kerül az oszlopok beállításához. Az egyes oszlopokban lévő értékek vektorok segítségével vannak megadva. Ezután az „alkalmazottak” DataFrame sorában és oszlopában két egymásba ágyazott for-hurkot használunk az adatok iterálásához. A külső ciklus a megadott DataFrame sorain iterál az „1:nrow(employees)” használatával. Minden sor esetében az „1:ncol(alkalmazottak)” szerepel a belső ciklusban a DataFrame oszlopai közötti ismételt ismétléshez.

Ezt követően van egy print() függvényünk a beágyazott ciklusokon belül, amely a paste() függvényt telepíti a sorindex, az oszlopindex és a cellaérték összefűzésére egyetlen karakterláncba. Az alkalmazott [sor, oszlop] kifejezés itt az aktuális cellában lévő értéket kapja, ahol a sor és az oszlop a meglévő sor- és oszlopindexek.

Így a konzol kimenete az összefűzött sorindexszel, oszlopindexszel és cellaértékkel egyetlen karakterláncba kerül lekérésre.

4. példa: For-Loop alternatív módszer az R-ben

A for ciklus mára elavult az R nyelvben. Azonban kínál néhány alternatív módszert, amelyek ugyanúgy működnek, mint a for-hurok, és gyorsabbak, mint a for-hurkok. A módszer az „apply family” függvényekből származik, amelyek for-loop a háttérben futnak a DataFrame-eken keresztüli iterációhoz. Tekintsük a következő R-kódot, ahol az saply() függvényt a DataFrame-en való hurkoláshoz használják.

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

var2=c(6:10),

var3=c(11:15),

var4=c(16:20))

dfX

alkalmaz(dfX, összeg)

Itt először létrehozzuk a „dfX” DataFrame-et úgy, hogy meghívjuk a data.frame() függvényt két oszloppal, amelyek mindegyike számértékeket tartalmaz. Ezután kinyomtatjuk az eredeti „dfX” DataFrame-et a konzolra. A következő lépésben az sapply() függvényt használjuk a megadott DataFrame áttételére, és megkapjuk az egyes oszlopok összegét. Az apply() függvény általában az „x” és a „FUN” argumentumokat veszi át. Ebben az esetben X a „dfX” DataFrame, a „FUN” pedig a DataFrame egyes oszlopaira alkalmazott sum() függvény.

Az iteráció eredménye, amelyet az apply() függvénnyel érünk el, a következő képernyőn érhető el. A DataFrame összegző műveletének eredményei minden oszlophoz megjelennek. Ezenkívül az „apply család” néhány más funkcióját is használhatjuk az R for-loop műveletéhez:

Következtetés

For-ciklusokkal dolgozunk, hogy a DataFrame sorain vagy oszlopain át iteráljuk egy adott művelet végrehajtásához. A for-ciklust külön-külön használják az oszlopok és sorok közötti iterációhoz. Továbbá ezt használjuk az adatkeret oszlopaiban és soraiban egyidejűleg történő iterációhoz. Legtöbbször a kívánt eredmény elérése érdekében funkciók alkalmazása hatékonyabb. Az Apply függvény példája az utolsó példában található a for-loop műveleten keresztül.