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.