For-Loop i R DataFrame

For Loop I R Dataframe



For-løkken er en kontrolstruktur, der gør det muligt for os at gentage et sæt instruktioner i et bestemt antal gange. Det er en almindeligt anvendt metode til iteration i R, især når vi skal udføre den samme operation på nogle elementer eller iterere over en datastruktur som den i DataFrame. Rækker og kolonner udgør DataFrames i R, hvor hver række repræsenterer en enkelt observation, og hver kolonne angiver en variabel eller et aspekt af denne observation.

Med denne særlige artikel bruger vi en for-loop til at iterere over DataFrame i forskellige tilgange. Vær opmærksom på, at for-loop iteration på tværs af rækker og kolonner kan være meget beregningsmæssigt for store DataFrames.







Eksempel 1: Brug af For-Loop Over DataFrame-rækker i R

For-løkken i R kan bruges til at iterere over rækkerne i en DataFrame. Inde i for-løkken kan vi bruge rækkeindekset til at få adgang til hver række i DataFrame. Lad os overveje følgende R-kode, som er demonstrationen af ​​for-loop til at iterere over rækkerne i den specificerede DataFrame.



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

c2 = c(6:10),

c3 = c(11:15))

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

række <- data[i, ]

print (række)

}

Her definerer vi først data.frame()-funktionen inde i 'data'. Data.frame()-funktionen her indeholder tre kolonner. Hver kolonne er sat med en talfølge fra henholdsvis 1 til 5, 6 til 10 og 11 til 15. Derefter implementeres for-loop-funktionen, som itererer over rækkerne i DataFrame 'data' ved hjælp af funktionen nrow() for at få det samlede antal rækker. Sløjfevariablen, 'i', overtager værdierne for hele antallet af rækker i 'data'.



Derefter udtrækker vi den i-te række af DataFrame 'data' ved hjælp af firkantede parentesnotation '[ ]'. Den udtrukne række gemmes i en 'række'-variabel, som vil blive udskrevet af print()-funktionen.





Derfor itererer løkken over alle rækkerne i DataFrame og viser rækkenumrene i outputtet sammen med værdierne i kolonnen.



Eksempel 2: Brug af For-Loop Over DataFrame-kolonner

På samme måde kan vi bruge for-løkken i R til at sløjfe over kolonnerne i den specificerede dataramme. Vi kan bruge den forrige kode til at sløjfe over kolonnerne, men vi skal bruge funktionen ncol() i for-loop. Omvendt har vi den enkleste tilgang til at sløjfe over kolonnerne i DataFrame ved hjælp af for-loop. Overvej følgende R-kode til 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 opretter vi først df-variablen, hvor data.frame() bruges med kolonneindsættelsen. 'df' DataFrame indeholder tre kolonner, der indeholder numeriske værdier. Dernæst bruger vi en for-loop til at iterere over kolonnenavnene på 'data' DataFrame ved hjælp af colnames()-funktionen. I hver iteration antager loop-variablen 'col' navnet på den aktuelle kolonne. Den ekstraherede kolonne gemmes derefter i en ny variabel, som er 'kolonne'.

Således udskriver dataene for 'kolonne'-variablen outputtet på følgende konsol:

Eksempel 3: Brug af For-Loop over hele datarammen

I de foregående eksempler sløjfede vi kolonnerne og rækkerne ved hjælp af henholdsvis for-løkken. Nu bruger vi den indlejrede for loops til at iterere over både rækkerne og kolonnerne i en DataFrame samtidigt. Koden for R er angivet i det følgende, hvor den indlejrede for-løkke bruges over kolonnerne og rækkerne:

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

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

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

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

for (række i 1:nrow(medarbejdere)) {

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

print(paste('Rækkeindeks', række, 'kolonnenavn', kolonne, 'celleværdi', medarbejdere[række, kolonne]))

}

}

Her erklærer vi 'employees'-variablen, hvor data.frame() kaldes for at sætte kolonnerne. Værdierne i hver kolonne er specificeret ved hjælp af vektorer. Derefter bruger vi to indlejrede for-løkker til rækken og kolonnen i 'medarbejdere' DataFrame til at iterere over dataene. Den ydre løkke itererer over rækkerne i den angivne DataFrame ved hjælp af '1:nrow(medarbejdere)'. For hver række bruges '1:ncol(medarbejdere)' i den indre løkke til gentagne gange at iterere over kolonnerne i DataFrame.

Derefter har vi en print()-funktion inde i de indlejrede sløjfer, som implementerer funktionen paste() til at sammenkæde rækkeindekset, kolonneindekset og celleværdien i en enkelt streng. Medarbejder-[række, kolonne]-udtrykket får her værdien i den aktuelle celle, hvor række og kolonne er henholdsvis de eksisterende række- og kolonneindekser.

Således hentes outputtet på konsollen med det sammenkædede rækkeindeks, kolonneindeks og celleværdi i en enkelt streng.

Eksempel 4: For-loop alternativ metode i R

For-løkken er nu forældet i R-sproget. Det giver dog nogle alternative metoder, der fungerer på samme måde som for-loop og er hurtigere end for-loops. Metoden er fra 'apply family'-funktionerne, som kører for-loop i baggrunden for at iterere over DataFrames. Lad os overveje følgende R-kode, hvor funktionen sapply() bruges til at sløjfe 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 at kalde funktionen data.frame() med to kolonner, der hver indeholder numeriske værdier. Vi udskriver derefter den originale 'dfX' DataFrame til konsollen. I det næste trin bruger vi funktionen sapply() til at iterere over den medfølgende DataFrame og få summen af ​​hver kolonne. Funktionen sapply() tager 'x' og 'FUN' argumenterne generelt. I dette tilfælde er X 'dfX' DataFrame, og 'FUN' er sum()-funktionen, der anvendes på hver af DataFrames kolonner.

Resultatet af iterationen, som opnås gennem funktionen sapply() opnås på følgende skærm. Resultaterne af DataFrames sumoperation vises for hver kolonne. Desuden kan vi også bruge nogle andre funktioner i 'anvend familie' til for-loop operationen i R:

Konklusion

Vi arbejder med for-loops for at iterere over rækkerne eller kolonnerne i DataFrame for at udføre en specifik operation. For-løkken bruges individuelt til at iterere over kolonnerne og rækkerne. Desuden bruger vi dette til iteration over både kolonner og rækker i datarammen på samme tid. Det meste af tiden er det mere effektivt at anvende funktioner for at få det ønskede resultat. Eksemplet på appliceringsfunktionen er givet i det sidste eksempel over for-loop-operationen.