Miten while-silmukat toimivat R-kielessä?
Silmukat ovat yksi ohjelmoinnin peruskäsitteistä. Ne varmistavat, että tietyt koodin osat suoritetaan toistuvasti tietyn ehdon vallitessa. R-kielessä while-silmukoilla osa toistetaan, kunnes aiemmin määritelty ehto muuttuu epätodeksi.
Mihin R:n while-silmukoita käytetään?
While-silmukoita käytetään toistamaan koodilohkon suorittamista tietyn ehdon perusteella. Niin kauan kuin tämä ehto on totta, while-silmukan koodi suoritetaan.
Silmukoita käytetään usein R-ohjelmoinnissa R-luettelon elementtien tutkimiseen ja tiettyjen toimintojen suorittamiseen niille yksitellen. Voit esimerkiksi tulostaa minkä tahansa merkkijonon näytölle R-merkkijonojen luettelosta. Lisäksi R:n while-silmukoita käytetään koodin ehdolliseen suorittamiseen. While-silmukan kaltaiset silmukat ovat monien tunnettujen lajittelualgoritmien perusta, jotka järjestävät tietokannan tiettyjen kriteerien mukaan.
R-kielessä käytettävien while-silmukoiden rakenne ja syntaksi
R-kielessä while-silmukoiden syntaksi on samanlainen kuin useimmissa muissa ohjelmointikielissä. Silmukan otsikossa, joka aloitetaan while-avainsanalla, ehto määritellään suluissa. Ehdon on oltava tosi, jotta silmukan runko voidaan suorittaa. Tämä runko on yksinkertaisesti silmukan otsikon jälkeinen oma koodilohko, joka on suljettu aaltosulkeisiin.
Tämän havainnollistamiseksi olemme luoneet esimerkin. Tämä R-silmukan esimerkki näyttää while-silmukan, joka tulostaa arvot 1:stä 10:een:
x <- 1
while (x <= 10) {
print(x)
x <- x + 1
}RBubblesort R-esimerkissä
Bubblesort on klassinen lajittelualgoritmi, jota käytetään R-vektorin tai R-taulukon elementtien lajitteluun nousevassa järjestyksessä. Tässä lajittelualgoritmissa while-silmukkaa käytetään lajittelukoodin suorittamiseen, kunnes kaikki vektorin elementit on lajiteltu:
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)
}RYllä olevassa koodissa luodaan R-funktio nimeltä bubblesort. Tämä varmistaa, että numeerinen vektori lajitellaan nousevassa järjestyksessä. While-silmukkaa käytetään suorittamaan vaihtoprosessi, joka on välttämätön Bubblesortille, kunnes lajittelu on valmis.
Keskeytä while-silmukka R:ssä
Jos haluat poistua while-silmukasta ennenaikaisesti tietyn ehdon täyttyessä, voit käyttää avainsanaa “break”. Tämä varmistaa, että silmukka poistetaan eikä siihen palata uudelleen. Seuraavassa on esimerkki “break”-lauseesta:
x <- 10
while (x >= 0) {
print(x)
if (x == 5) {
break
}
x <- x - 1
}RYllä oleva silmukka tulostaa näytölle numerot 10–5. Kun muuttuja ”x” saavuttaa arvon 5, R:n ”if”-ehto suoritetaan ja silmukka lopetetaan ennenaikaisesti kutsumalla ”break”.
Muut silmukat R:ssä
R-kielessä while-silmukka ei ole ainoa silmukkatyyppi. On myös for-silmukka, jota pidetään usein eräänlaisena laskentasilmukkana, sekä repeat-silmukka, jota käytetään koodin suorittamiseen useita kertoja ehdosta riippumatta. Repeat-silmukat on lopetettava avainsanalla “break”, muuten ne ovat loputtomia silmukoita.
For-silmukka R-kielessä
For-silmukoita käytetään, kun toistojen määrä on tiedossa etukäteen. Toistojen määrä määritetään nimenomaisesti silmukan otsikossa. For-silmukka, joka tulostaa numerot 1–5, näyttää tältä:
for (z in 1:5) {
print(i)
}RToista silmukka R:ssä
R-kielessä toistolenkkejä käytetään koodin suorittamiseen useita kertoja, riippumatta ehdosta. Jos et ole vasta aloittamassa ohjelmointia, olet todennäköisesti perehtynyt do-while-lenkkeihin muista ohjelmointikielistä, kuten Java. R-kielessä ei ole eksplisiittistä do-while-lenkkiä, jossa koodilohko suoritetaan vähintään kerran. Mutta toiminto voidaan helposti toteuttaa toistolenkillä:
x <- 1
repeat {
print(x)
if (x >= 10) {
break
}
x <- x + 1
}RYllä oleva koodiesimerkki tulostaa numerot 1–10. Koodi suoritetaan vähintään kerran (klassisessa do-while-silmukassa ‘do-koodilohkossa’) ennen ‘if’-lauseketta, joka lopettaa silmukan, jos määritetty ehto on tosi. 24791f2f3a335aba9148d493e9499358