For-Loop i R DataFrame

For Loop I R Dataframe



For-loopen är en kontrollstruktur som gör att vi kan upprepa en uppsättning instruktioner i ett specificerat antal gånger. Det är en vanlig metod för iteration i R, speciellt när vi behöver utföra samma operation på vissa element eller iterera över en datastruktur som den i DataFrame. Rader och kolumner utgör DataFrames i R där varje rad representerar en enda observation och varje kolumn betecknar en variabel eller aspekt av den observationen.

Med just den här artikeln använder vi en for-loop för att iterera över DataFrame i olika tillvägagångssätt. Var medveten om att for-loop-iterationen över rader och kolumner kan vara mycket beräkningsbar för stora DataFrames.







Exempel 1: Använda For-Loop Over DataFrame-rader i R

For-loopen i R kan användas för att iterera över raderna i en DataFrame. Inuti for-loopen kan vi använda radindexet för att komma åt varje rad i DataFrame. Låt oss överväga följande R-kod som är demonstrationen av for-loop för att iterera över raderna i den angivna 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)

}

Här definierar vi först funktionen data.frame() inuti 'data'. Data.frame()-funktionen här innehåller tre kolumner. Varje kolumn är satt med en sekvens av nummer från 1 till 5, 6 till 10 respektive 11 till 15. Därefter distribueras for-loop-funktionen som itererar över raderna i DataFrame 'data' med funktionen nrow() för att få det totala antalet rader. Slingvariabeln, 'i', tar på sig värdena för hela antalet rader i 'data'.



Sedan extraherar vi den i:te raden i DataFrame 'data' med hjälp av hakparenteserna '[ ]'. Den extraherade raden lagras i en 'row'-variabel som kommer att skrivas ut av print()-funktionen.





Därför itererar slingan över alla rader i DataFrame och visar radnumren i utdata tillsammans med värdena för kolumnen.



Exempel 2: Använda For-Loop Over DataFrame-kolumner

På liknande sätt kan vi använda for-loopen i R för att loopa över kolumnerna i den angivna dataramen. Vi kan använda föregående kod för att loopa över kolumnerna men vi måste använda funktionen ncol() i for-loopen. Omvänt har vi det enklaste sättet att loopa över kolumnerna i DataFrame med hjälp av for-loop. Tänk på följande R-kod för detta:

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

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

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

for(col in colnames(df)) {

kolumn <- df[[kol]]

print (kolumn)

}

Här skapar vi först variabeln df där data.frame() används med kolumninfogningen. 'df' DataFrame innehåller tre kolumner som innehåller numeriska värden. Därefter använder vi en for-loop för att iterera över kolumnnamnen för 'data' DataFrame med hjälp av funktionen colnames(). I varje iteration antar loopvariabeln 'col' namnet på den aktuella kolumnen. Den extraherade kolumnen lagras sedan i en ny variabel som är 'kolumn'.

Data för variabeln 'kolumn' skriver alltså ut resultatet på följande konsol:

Exempel 3: Använda For-Loop över hela dataramen

I de tidigare exemplen gick vi över kolumnerna och raderna med hjälp av for-loopen. Nu använder vi kapslade för loopar för att iterera över både rader och kolumner i en DataFrame, samtidigt. Koden för R tillhandahålls i det följande där den kapslade for-loopen används över kolumnerna och raderna:

anställda <- data.frame(id=1:4,

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

location=c('Australien', 'Amerika', 'Kanada', 'Jordan'),

lön=c(2000, 1800, 1500, 1000))

för (rad i 1:nrow(anställda)) {

för (kol i 1:ncol(anställda)) {

print(paste('Radindex', rad, 'kolumns namn', kol, 'cellvärde', anställda[rad, kol]))

}

}

Här deklarerar vi variabeln 'anställda' där data.frame() anropas för att ställa in kolumnerna. Värdena i varje kolumn anges med hjälp av vektorer. Sedan, för raden och kolumnen i 'anställda' DataFrame, använder vi två kapslade for-loopar för att iterera över data. Den yttre slingan itererar över raderna i den angivna DataFrame med '1:nrow(anställda)'. För varje rad används '1:ncol(anställda)' i den inre slingan för att upprepade gånger iterera över kolumnerna i DataFrame.

Efter det har vi en print()-funktion inuti de kapslade slingorna som distribuerar funktionen paste() för att sammanfoga radindex, kolumnindex och cellvärde i en enda sträng. Medarbetaruttrycket [rad, kol] får här värdet i den aktuella cellen där rad och kolumn är befintliga rad- respektive kolumnindex.

Sålunda hämtas utdata på konsolen med det sammanlänkade radindexet, kolumnindexet och cellvärdet till en enda sträng.

Exempel 4: For-loop alternativ metod i R

For-slingan är nu föråldrad i R-språket. Det ger dock några alternativa metoder som fungerar på samma sätt som for-loopen och är snabbare än for-looparna. Metoden är från 'apply family'-funktionerna som körs for-loop i bakgrunden för att iterera över DataFrames. Låt oss överväga följande R-kod där sapply()-funktionen används för att loopa över DataFrame.

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

var2=c(6:10),

var3=c(11:15),

var4=c(16:20))

dfX

sapply(dfX, summa)

Här etablerar vi först 'dfX' DataFrame genom att anropa data.frame()-funktionen med två kolumner som var och en innehåller numeriska värden. Vi skriver sedan ut den ursprungliga 'dfX' DataFrame till konsolen. I nästa steg använder vi funktionen sapply() för att iterera över den tillhandahållna DataFrame och få summan av varje kolumn. Funktionen sapply() tar 'x'- och 'FUN'-argumenten i allmänhet. I det här fallet är X 'dfX' DataFrame och 'FUN' är sum()-funktionen som tillämpas på var och en av DataFrames kolumner.

Resultatet av iterationen som uppnås genom funktionen sapply() uppnås på följande skärm. Resultaten av DataFrames summaoperation visas för varje kolumn. Dessutom kan vi också använda några andra funktioner i 'apply family' för for-loop-operationen i R:

Slutsats

Vi arbetar med for-loops för att iterera över raderna eller kolumnerna i DataFrame för att utföra en specifik operation. For-loopen används individuellt för att iterera över kolumnerna och raderna. Dessutom använder vi detta för iteration över både kolumner och rader i dataramen samtidigt. För det mesta är det mer effektivt att använda funktioner för att få önskat resultat. Exemplet på appliceringsfunktionen ges i det sista exemplet över for-loop-operationen.