Kā darbojas cikli R valodā?
Cikli ir viens no programmēšanas pamatjēdzieniem. Tie nodrošina, ka noteikti koda fragmenti tiek izpildīti atkārtoti noteiktos apstākļos. Ar cikliem while valodā R fragments tiek atkārtots, līdz iepriekš noteiktie apstākļi kļūst nepatiesi.
Kādam nolūkam R valodā tiek izmantotas while cilpas?
While cilpas tiek izmantotas, lai atkārtoti izpildītu koda bloku atkarībā no nosacījuma. Kamēr šis nosacījums ir spēkā, tiek izpildīts kods while cilpā.
Cikli bieži tiek izmantoti R programmēšanā, lai uzzinātu par R saraksta elementiem un veiktu konkrētas darbības ar katru no tiem atsevišķi. Piemēram, jūs varat izvadīt jebkuru virkni uz ekrāna no R virkņu saraksta. Turklāt R cikli tiek izmantoti koda nosacījuma izpildei. Cikli, piemēram, while cikls, ir daudzu labi zināmu šķirošanas algoritmu pamatā, kas organizē datu bāzi atbilstoši noteiktiem kritērijiem.
R valodas while ciklu struktūra un sintakse
R valodā while cilpu sintakse ir līdzīga while cilpu sintaksei vairumā citu programmēšanas valodu. Cilpas galvenajā daļā, kas tiek ievadīta ar atslēgvārdu while, nosacījums tiek norādīts iekavās. Lai cilpa tiktu izpildīta, šim nosacījumam ir jābūt patiesam. Šī cilpa nav nekas cits kā tās paša koda bloks pēc cilpas galvenās daļas, kas ietverts izliektās iekavās.
Lai to ilustrētu, esam izveidojuši piemēru. Šis R cilpas piemērs parāda while cilpu, kas izvada vērtības no 1 līdz 10:
x <- 1
while (x <= 10) {
print(x)
x <- x + 1
}RBubblesort R piemērā
Bubblesort ir klasisks šķirošanas algoritms, ko izmanto, lai šķirotu R vektora vai masīva elementus R augošā secībā. Šajā šķirošanas algoritmā tiek izmantota while cilpa, lai izpildītu šķirošanas kodu, līdz visi vektora elementi ir šķiroti:
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)
}RIepriekš minētajā kodā ir izveidota R funkcija ar nosaukumu bubblesort. Tā nodrošina, ka skaitliskais vektors tiek šķirots augošā secībā. While cilpa tiek izmantota, lai veiktu apmaiņas procesu, kas ir būtisks Bubblesort, līdz šķirošana ir pabeigta.
Pārtraukums ciklā while R
Lai priekšlaicīgi izietu no cikla ar noteiktu nosacījumu, varat izmantot atslēgvārdu „break”. Tas nodrošina, ka cikls tiek pārtraukts un netiek atkārtoti uzsākts. Šeit ir piemērs ar atslēgvārdu „break”, lai to izskaidrotu:
x <- 10
while (x >= 0) {
print(x)
if (x == 5) {
break
}
x <- x - 1
}RIepriekš minētā cilpa ekrānā izvada skaitļus no 10 līdz 5. Kad mainīgais “x” sasniedz vērtību 5, tiek izpildīts R “if” nosacījums un cilpa tiek priekšlaicīgi pārtraukta, izsaucot “break”.
Citi cilpas R
While cilpa R valodā nav vienīgais cilpas veids R valodā. Ir arī for cilpa, ko bieži uzskata par sava veida skaitīšanas cilpu, un repeat cilpa, ko izmanto, lai izpildītu kodu vairākas reizes, neatkarīgi no nosacījuma. Repeat cilpas ir jāiziet ar atslēgvārdu “break”, citādi tās ir bezgalīgas cilpas.
For cilpa R valodā
For cilpas tiek izmantotas, ja iterāciju skaits ir zināms iepriekš. Iterāciju skaits ir skaidri norādīts cilpas galvenajā daļā. For cilpa, kas izvada skaitļus no 1 līdz 5, izskatās šādi:
for (z in 1:5) {
print(i)
}RAtkārtot cilpu R
Atkārtojumu cilpas R tiek izmantotas, lai izpildītu kodu vairākas reizes, neatkarīgi no nosacījuma. Ja jūs neesat iesācējs programmēšanā, jūs droši vien esat pazīstams ar do-while cilpām no citām programmēšanas valodām, piemēram, Java. R nav eksplicītas do-while cilpas, kurā koda bloks tiek izpildīts vismaz vienu reizi. Taču šo funkcionalitāti var viegli īstenot ar atkārtojumu cilpām:
x <- 1
repeat {
print(x)
if (x >= 10) {
break
}
x <- x + 1
}RIepriekš minētais koda piemērs izvada skaitļus no 1 līdz 10. Kods tiek izpildīts vismaz vienu reizi (klasiskā do-while cilpā ‘do codeblock’) pirms ‘if’ izteikuma, kas pārtrauc cilpu, ja norādītais nosacījums ir patiesība. be736e550b1141b116c6745223aecfd7
d1d76d85f27f41c7f98c49bcb7641848
37b614e8ff1142c9025056cc2b26f936
f73edeee674565a3ba93d621869650b4
c3342c656fff860ffa932a7745f514be
74bb01a35f8debbbb0205905d24a8ee1