For-Loop i R DataFrame

For Loop I R Dataframe



For-løkken er en kontrollstruktur som gjør oss i stand til å gjenta et sett med instruksjoner i et spesifisert antall ganger. Det er en ofte brukt metode for iterasjon i R, spesielt når vi trenger å utføre den samme operasjonen på noen elementer eller iterere over en datastruktur som den i DataFrame. Rader og kolonner utgjør DataFrames i R der hver rad representerer en enkelt observasjon og hver kolonne angir en variabel eller et aspekt av den observasjonen.

Med denne spesielle artikkelen bruker vi en for-løkke for å iterere over DataFrame i forskjellige tilnærminger. Vær oppmerksom på at for-loop-iterasjonen på tvers av rader og kolonner kan være svært beregningsmessig for store DataFrames.







Eksempel 1: Bruk av For-Loop Over DataFrame-rader i R

For-løkken i R kan brukes til å iterere over radene i en DataFrame. Inne i for-løkken kan vi bruke radindeksen for å få tilgang til hver rad i DataFrame. La oss vurdere følgende R-kode som er demonstrasjonen av for-loop for å iterere over radene i den spesifiserte DataFrame.



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

c2 = c(6:10),

c3 = c(11:15))

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

rad <- data[i, ]

print (rad)

}

Her definerer vi først data.frame()-funksjonen inne i 'data'. Data.frame()-funksjonen her inneholder tre kolonner. Hver kolonne er satt med en sekvens av tall fra henholdsvis 1 til 5, 6 til 10 og 11 til 15. Etter det distribueres for-loop-funksjonen som itererer over radene i DataFrame 'data' ved å bruke nrow()-funksjonen for å få det totale antallet rader. Løkkevariabelen, 'i', tar på seg verdiene til hele antall rader i 'data'.



Deretter trekker vi ut den i-te raden i DataFrame 'data' ved å bruke hakeparentesnotasjonen '[ ]'. Den utpakkede raden lagres i en 'rad'-variabel som vil bli skrevet ut av funksjonen print().





Derfor itererer løkken over alle radene i DataFrame og viser radnumrene i utdataene sammen med verdiene til kolonnen.



Eksempel 2: Bruk av For-Loop Over DataFrame-kolonner

På samme måte kan vi bruke for-løkken i R for å gå over kolonnene i den spesifiserte datarammen. Vi kan bruke den forrige koden til å sløyfe over kolonnene, men vi må bruke funksjonen ncol() i for-løkken. Omvendt har vi den enkleste tilnærmingen til å sløyfe over kolonnene i DataFrame ved å bruke for-loop. Tenk på følgende R-kode for dette:

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

kolonne <- df[[col]]

print (kolonne)

}

Her lager vi først df-variabelen der data.frame() brukes med kolonneinnsettingen. 'df' DataFrame inneholder tre kolonner som inneholder numeriske verdier. Deretter bruker vi en for-løkke for å iterere over kolonnenavnene til 'data' DataFrame ved å bruke colnames()-funksjonen. I hver iterasjon får løkkevariabelen 'col' navnet på gjeldende kolonne. Den ekstraherte kolonnen lagres deretter i en ny variabel som er 'kolonne'.

Dermed skriver dataene til 'kolonne'-variabelen ut utdataene på følgende konsoll:

Eksempel 3: Bruk av For-Loop over hele datarammen

I de tidligere eksemplene sløyfet vi kolonnene og radene ved å bruke henholdsvis for-løkken. Nå bruker vi nestede for-løkker for å iterere over både rader og kolonner i en DataFrame, samtidig. Koden til R er gitt i det følgende der den nestede for-løkken brukes over kolonnene og radene:

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

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

location=c('Australia', 'America', 'Canada', 'Jordan'),

lønn=c(2000, 1800, 1500, 1000))

for (rad i 1:nrow(ansatte)) {

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

print(paste('Radindeks', rad, 'kolonnenavn', kolum, 'celleverdi', ansatte[rad, kolonne]))

}

}

Her erklærer vi «employees»-variabelen der data.frame() kalles for å sette kolonnene. Verdiene i hver kolonne er spesifisert ved hjelp av vektorer. Deretter, for raden og kolonnen til 'ansattes' DataFrame, bruker vi to nestede for-løkker for å iterere over dataene. Den ytre løkken itererer over radene i den spesifiserte DataFrame ved å bruke '1:nrow(ansatte)'. For hver rad brukes '1:ncol(ansatte)' i den indre sløyfen for å gjentatte ganger iterere over kolonnene i DataFrame.

Etter det har vi en print()-funksjon inne i de nestede løkkene som distribuerer paste()-funksjonen for å sette sammen radindeksen, kolonneindeksen og celleverdien til en enkelt streng. Ansatt [rad, kol]-uttrykket her får verdien i gjeldende celle der rad og kolonne er henholdsvis de eksisterende rad- og kolonneindeksene.

Dermed hentes utdataene på konsollen sammen med den sammenkoblede radindeksen, kolonneindeksen og celleverdien i en enkelt streng.

Eksempel 4: For-loop alternativ metode i R

For-løkken er nå utdatert på R-språket. Det gir imidlertid noen alternative metoder som fungerer på samme måte som for-løkken og er raskere enn for-løkkene. Metoden er fra 'apply family'-funksjonene som kjører for-loop i bakgrunnen for å iterere over DataFrames. La oss vurdere følgende R-kode der sapply()-funksjonen brukes til å sløyfe over DataFrame.

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

var2=c(6:10),

var3=c(11:15),

var4=c(16:20))

dfX

sapply(dfX, sum)

Her etablerer vi først 'dfX' DataFrame ved å kalle data.frame()-funksjonen med to kolonner som hver inneholder numeriske verdier. Vi skriver deretter ut den originale 'dfX' DataFrame til konsollen. I neste trinn bruker vi sapply()-funksjonen til å iterere over den oppgitte DataFrame og få summen av hver kolonne. Funksjonen sapply() tar 'x' og 'FUN' argumentene generelt. I dette tilfellet er X 'dfX' DataFrame, og 'FUN' er sum() funksjonen som brukes på hver av DataFrames kolonner.

Resultatet av iterasjonen som oppnås gjennom sapply()-funksjonen oppnås i følgende skjermbilde. Resultatene av DataFrames sumoperasjon vises for hver kolonne. Dessuten kan vi også bruke noen andre funksjoner i 'apply-familien' for for-loop-operasjonen i R:

Konklusjon

Vi jobber med for-løkker for å iterere over radene eller kolonnene i DataFrame for å utføre en spesifikk operasjon. For-løkken brukes individuelt til å iterere over kolonnene og radene. Videre bruker vi dette til iterasjon over både kolonner og rader i datarammen samtidig. Mesteparten av tiden er det mer effektivt å bruke funksjoner for å få ønsket resultat. Eksemplet på bruk-funksjonen er gitt i det siste eksemplet over for-loop-operasjonen.