Looper er et av de grunnleggende konseptene i programmering. De sørger for at visse deler av koden utføres gjentatte ganger under en bestemt betingelse. Med while-looper i R gjentas en seksjon til den tidligere angitte betingelsen blir falsk.

Hva brukes while-løkker i R til?

While-løkker brukes til å gjenta utførelsen av en kodeblokk avhengig av en betingelse. Så lenge denne betingelsen er oppfylt, utføres koden i while-løkken.

Looper brukes ofte i R-programmering for å lære om elementene i en R-liste og utføre spesifikke handlinger på dem individuelt. For eksempel kan du vise en hvilken som helst streng på skjermen fra en liste med R-strenger. I tillegg brukes while-looper i R til betinget utførelse av kode. Looper som while-loopen er grunnlaget for mange kjente sorteringsalgoritmer som organiserer en database etter bestemte kriterier.

Struktur og syntaks for while-løkker i R

Syntaksen for while-løkker i R er lik syntaksen for while-løkker i de fleste andre programmeringsspråk. I løkkeoverskriften, som introduseres med nøkkelordet while, angis betingelsen i parentes. Den sistnevnte må være sann for at løkkehullet skal utføres. Dette hullet er ikke annet enn sin egen kodeblokk etter løkkeoverskriften, omsluttet av krøllparenteser.

For å illustrere dette har vi laget et eksempel. Dette R-løkkeeksemplet viser en while-løkke som gir verdier fra 1 til 10:

x <- 1
while (x <= 10) {
    print(x)
    x <- x + 1
}
R

Bubblesort i R-eksempel

Bubblesort er en klassisk sorteringsalgoritme som brukes til å sortere elementer i en R-vektor eller en matrise i R i stigende rekkefølge. I denne sorteringsalgoritmen brukes en while-løkke til å utføre sorteringskoden til alle elementene i vektoren er sortert:

bubblesort <- function(x) {
    swapped <- TRUE
    n <- length(x) - 1
    while (swapped) {
        swapped <- FALSE
        for (i in 1:n) {
            if (x[i] > x[i+1]) {
                tmp <- x[i]
                x[i] <- x[i+1]
                x[i+1] <- tmp
                swapped <-TRUE
                }
        }
    }
    return(x)
}
R

I koden ovenfor opprettes en R-funksjon kalt bubblesort. Dette sikrer at en numerisk vektor sorteres i stigende rekkefølge. While-sløyfen brukes til å utføre utvekslingsprosessen, som er avgjørende for Bubblesort, til sorteringen er fullført.

Bryt inn i while-sløyfen i R

For å avslutte en while-løkke før tiden under en bestemt betingelse, kan du bruke nøkkelordet «break». Dette sikrer at løkken forlates og ikke gjenopptas. Her er et eksempel på «break»-setningen for å forklare:

x <- 10
while (x >= 0) {
    print(x)
    if (x == 5) {
        break
        }
        x <- x - 1
}
R

Ovennevnte løkke viser tallene 10 til 5 på skjermen. Når variabelen «x» når verdien 5, utføres R «if»-betingelsen, og løkken avsluttes før tiden ved å kalle «break».

Andre sløyfer i R

While-sløyfen i R er ikke den eneste typen sløyfe i R. Det finnes også for-sløyfen, som ofte betraktes som en slags tellesløyfe, og repeat-sløyfen, som brukes til å utføre kode flere ganger, uavhengig av en betingelse. Repeat-sløyfer må avsluttes med nøkkelordet «break», ellers blir de uendelige sløyfer.

For-løkke i R

For-løkker brukes når antall iterasjoner er kjent på forhånd. Antall iterasjoner angis eksplisitt i løkkens overskrift. En for-løkke som skriver ut tallene 1 til 5 ser slik ut:

for (z in 1:5) {
print(i)
}
R

Gjenta sløyfe i R

Repeat-løkker i R brukes til å utføre kode flere ganger, uavhengig av en betingelse. Hvis du ikke akkurat har begynt å programmere, er du sannsynligvis kjent med do-while-løkker fra andre programmeringsspråk som Java. Det finnes ingen eksplisitt do-while-løkke i R der en kodeblokk utføres minst én gang. Men funksjonaliteten kan enkelt implementeres med repeat-løkker:

x <- 1
repeat {
    print(x)
    if (x >= 10) {
        break
        }
x <- x + 1
}
R

Kodeeksemplet ovenfor viser tallene fra 1 til 10. Koden utføres minst én gang (i en klassisk do-while-løkke i «do-kodeblokken») før «if»-setningen, som avslutter løkken hvis den angitte betingelsen er sann. be736e550b1141b116c6745223aecfd7

d1d76d85f27f41c7f98c49bcb7641848

37b614e8ff1142c9025056cc2b26f936

f73edeee674565a3ba93d621869650b4

f6ad642a4496a228d9cd498361ed3d1a

Go to Main Menu