Cikli ir viens no prog­ram­mē­ša­nas pa­mat­jē­dzie­niem. 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 iz­man­to­tas while cilpas?

While cilpas tiek iz­man­to­tas, lai atkārtoti izpildītu koda bloku atkarībā no no­sa­cī­ju­ma. Kamēr šis no­sa­cī­jums ir spēkā, tiek izpildīts kods while cilpā.

Cikli bieži tiek izmantoti R prog­ram­mē­ša­nā, lai uzzinātu par R saraksta ele­men­tiem 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 no­sa­cī­ju­ma izpildei. Cikli, piemēram, while cikls, ir daudzu labi zināmu šķi­ro­ša­nas algoritmu pamatā, kas organizē datu bāzi at­bil­sto­ši no­teik­tiem kri­tē­ri­jiem.

R valodas while ciklu struktūra un sintakse

R valodā while cilpu sintakse ir līdzīga while cilpu sintaksei vairumā citu prog­ram­mē­ša­nas valodu. Cilpas galvenajā daļā, kas tiek ievadīta ar at­slēg­vār­du while, no­sa­cī­jums tiek norādīts iekavās. Lai cilpa tiktu izpildīta, šim no­sa­cī­ju­mam 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 iz­vei­do­ju­š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
}
R

Bubble­sort R piemērā

Bubble­sort ir klasisks šķi­ro­ša­nas algoritms, ko izmanto, lai šķirotu R vektora vai masīva elementus R augošā secībā. Šajā šķi­ro­ša­nas algoritmā tiek izmantota while cilpa, lai izpildītu šķi­ro­ša­nas 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)
}
R

Iepriekš minētajā kodā ir izveidota R funkcija ar nosaukumu bubble­sort. Tā nodrošina, ka skait­lis­kais vektors tiek šķirots augošā secībā. While cilpa tiek izmantota, lai veiktu apmaiņas procesu, kas ir būtisks Bubble­sort, līdz šķirošana ir pabeigta.

Pār­trau­kums ciklā while R

Lai priekš­lai­cī­gi izietu no cikla ar noteiktu no­sa­cī­ju­mu, varat izmantot at­slēg­vār­du „break”. Tas nodrošina, ka cikls tiek pār­traukts un netiek atkārtoti uzsākts. Šeit ir piemērs ar at­slēg­vār­du „break”, lai to iz­skaid­ro­tu:

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

Iepriekš 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” no­sa­cī­jums un cilpa tiek priekš­lai­cī­gi pār­trauk­ta, 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 skai­tī­ša­nas cilpu, un repeat cilpa, ko izmanto, lai izpildītu kodu vairākas reizes, ne­at­ka­rī­gi no no­sa­cī­ju­ma. Repeat cilpas ir jāiziet ar at­slēg­vār­du “break”, citādi tās ir bez­ga­lī­gas cilpas.

For cilpa R valodā

For cilpas tiek iz­man­to­tas, 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)
}
R

Atkārtot cilpu R

At­kār­to­ju­mu cilpas R tiek iz­man­to­tas, lai izpildītu kodu vairākas reizes, ne­at­ka­rī­gi no no­sa­cī­ju­ma. Ja jūs neesat iesācējs prog­ram­mē­ša­nā, jūs droši vien esat pazīstams ar do-while cilpām no citām prog­ram­mē­ša­nas valodām, piemēram, Java. R nav eks­pli­cī­tas do-while cilpas, kurā koda bloks tiek izpildīts vismaz vienu reizi. Taču šo fun­kcio­na­li­tā­ti var viegli īstenot ar at­kār­to­ju­mu cilpām:

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

Iepriekš 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 no­rā­dī­tais no­sa­cī­jums ir patiesība. be736e550b1141b116c6745223aecfd7

d1d76d85f27f41c7f98c49bcb7641848

37b614e8ff1142c9025056cc2b26f936

f73edeee674565a3ba93d621869650b4

c3342c656fff860ffa932a7745f514be

74bb01a35f8debbbb0205905d24a8ee1

Go to Main Menu