Hoe werken while-lussen in R?
Lussen zijn een van de basisconcepten van programmeren. Ze zorgen ervoor dat bepaalde passages van code herhaaldelijk worden uitgevoerd onder een bepaalde voorwaarde. Met while-lussen in R wordt een sectie herhaald totdat de eerder gespecificeerde voorwaarde onwaar wordt.
Waar worden while-lussen in R voor gebruikt?
While-lussen worden gebruikt om een blok code herhaaldelijk uit te voeren, afhankelijk van een voorwaarde. Zolang deze voorwaarde waar is, wordt de code in de while-lus uitgevoerd.
Lussen worden vaak gebruikt in R-programmering om meer te weten te komen over elementen van een R-lijst en om specifieke acties op elk element afzonderlijk uit te voeren. U kunt bijvoorbeeld elke string uit een lijst met R-strings op het scherm weergeven. Daarnaast worden while-lussen in R gebruikt voor de voorwaardelijke uitvoering van code. Lussen zoals de while-lus vormen de basis van veel bekende sorteeralgoritmen die een database volgens bepaalde criteria ordenen.
Structuur en syntaxis van while-lussen in R
De syntaxis van while-lussen in R is vergelijkbaar met die van while-lussen in de meeste andere programmeertalen. In de lusheader, die wordt geïntroduceerd met het sleutelwoord while, wordt de voorwaarde tussen haakjes gespecificeerd. Deze voorwaarde moet waar zijn om de lus te kunnen uitvoeren. Deze lus is niets meer dan een eigen blok code na de lusheader, omsloten door accolades.
Om dit te illustreren, hebben we een voorbeeld gemaakt. Dit R-lusvoorbeeld toont een while-lus die waarden van 1 tot 10 uitvoert:
x <- 1
while (x <= 10) {
print(x)
x <- x + 1
}RBubblesort in R-voorbeeld
Bubblesort is een klassiek sorteeralgoritme dat wordt gebruikt om elementen van een R-vector of een array in R in oplopende volgorde te sorteren. In dit sorteeralgoritme wordt een while-lus gebruikt om de sorteercode uit te voeren totdat alle elementen van de vector zijn gesorteerd:
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)
}RIn de bovenstaande code wordt een R-functie met de naam bubblesort aangemaakt. Deze zorgt ervoor dat een numerieke vector in oplopende volgorde wordt gesorteerd. De while-lus wordt gebruikt om het uitwisselingsproces uit te voeren, wat essentieel is voor Bubblesort, totdat het sorteren is voltooid.
Onderbreking tijdens lus in R
Om een while-lus onder bepaalde omstandigheden voortijdig te verlaten, kunt u het sleutelwoord ‘break’ gebruiken. Dit zorgt ervoor dat de lus wordt verlaten en niet opnieuw wordt uitgevoerd. Hier volgt een voorbeeld van de ‘break’-instructie ter verduidelijking:
x <- 10
while (x >= 0) {
print(x)
if (x == 5) {
break
}
x <- x - 1
}RDe bovenstaande lus geeft de getallen van 10 tot 5 weer op het scherm. Wanneer de variabele ‘x’ de waarde 5 bereikt, wordt de R ‘if’-voorwaarde uitgevoerd en wordt de lus voortijdig beëindigd door ‘break’ aan te roepen.
Andere lussen in R
De while-lus in R is niet de enige soort lus in R. Er is ook de for-lus, die vaak wordt gezien als een soort tel-lus, en de repeat-lus, die wordt gebruikt om code meerdere keren uit te voeren , ongeacht een voorwaarde. Repeat-lussen moeten worden afgesloten met het sleutelwoord ‘break’, anders zijn het oneindige lussen.
For-lus in R
For-lussen worden gebruikt wanneer het aantal iteraties vooraf bekend is. Het aantal iteraties wordt expliciet gespecificeerd in de lusheader. Een for-lus die getallen van 1 tot 5 uitvoert, ziet er als volgt uit:
for (z in 1:5) {
print(i)
}RHerhaal lus in R
Herhalingslussen in R worden gebruikt om code meerdere keren uit te voeren, ongeacht een voorwaarde. Als u niet net begint met programmeren, bent u waarschijnlijk bekend met do-while-lussen uit andere programmeertalen zoals Java. Er is geen expliciete do-while-lus in R waarbij een blok code minstens één keer wordt uitgevoerd. Maar de functionaliteit kan eenvoudig worden geïmplementeerd met herhalingslussen:
x <- 1
repeat {
print(x)
if (x >= 10) {
break
}
x <- x + 1
}RHet bovenstaande codevoorbeeld geeft getallen van 1 tot 10 weer. De code wordt minstens één keer uitgevoerd (in een klassieke do-while-lus in het ‘do-codeblok’) vóór de ‘if’-instructie, die de lus beëindigt als de opgegeven voorwaarde waar is.