Keeruliste arvutuste ja muude korduvate toimingute sujuvamaks muutmiseks valdage for-silmust.

Silmused on programmeerimise põhistruktuur, mis võtavad koodiploki ja käitavad seda korduvalt. For silmused on üks silmusetüüpidest, mida sisaldavad peaaegu kõik keeled. Silmuste R-id on andmete analüüsimise lahutamatu osa.

Need teenivad mitmesuguseid eesmärke, alates väljundi vormindamisest kuni suurte andmekogumite arvutuste tegemiseni. For-silmuste kasutamine R-s muudab andmeanalüüsi teostamise lihtsamaks.

R's Basic for Loop

R-keele for loop toimib sarnaselt standardiga Go-st leitud silmuste jaoks ja enamik teisi programmeerimiskeeli. Arvestades lähtepunkti, käivitab see selles sisalduva koodi teatud arv kordi.

Loendur hoiab iteratsiooni, milles silmus on praegu sisse lülitatud, ja saate sellele juurde pääseda seotud koodiplokist. Silmused võivad töötada fikseeritud arvu iteratsioonide või massiivi, vektori või loendi kogupikkuse jaoks.

Fikseeritud iteratsioonitsüklid

Fikseeritud iteratsioonitsüklid R-is on järgmisel kujul:

instagram viewer
jaoks (x sisse1:10) {
printida (x)
}

Silmuses olev x on muutuja, mis salvestab tsükli iteratsiooni.

Märksõna "in" järel on tsükli algus- ja lõpp-punktid. Tsükkel alustab iteraatorit esimesest numbrist.

Pärast iga kord, kui tsüklis olev kood töötab, kontrollib see, kas iteraator on võrdne kooloni järel oleva arvuga.

Kui on, jätkub koodi täitmine pärast tsüklit. Kui see pole nii, suureneb iteraator 1 võrra ja sulgudes olev koodiplokk käivitatakse uuesti.

Massiivide, loendite ja vektorite silmuste jaoks

Just nagu Pythonis sõnastikku sirvides, saate korduda R-i sobivate andmestruktuuride üle, kasutades for-tsüklit. Fikseeritud algus- ja lõpp-punkti asemel võite kasutada mis tahes itereeritavat andmestruktuuri pärast märksõna „in”.

Sel viisil silmuse tegemine muudab koodi käitumist. Siin toimib silmus nagu foreach tsükkel sellistest keeltest nagu C#:

töötajad "Ben", "Jane", "Suzi", "Josh", "Carol")

jaoks (x sisse töötajad) {
printida (x)
}

Nüüd, selle asemel, et x hoiab käes tsükli praegust iteratsiooni, hoiab see objekti massiivist või loendist, milles silmus parasjagu on. Kui loendis, massiivis või vektoris on rohkem üksusi, seatakse x pärast iga tsükli lõppu järgmisele üksusele. Kui üksusi pole rohkem, jätkatakse täitmist koodiga pärast tsüklit.

c primitiivne funktsioon ja silmuste jaoks

Lisaks juba asustatud andmestruktuuridele saab R for-tsükli deklaratsioonis koostada uue. Selleks kasutage funktsiooni c, et ühendada mitu elementi uueks vektoriks.

Ülaltoodud näidet saate selle meetodi abil lihtsustada:

jaoks (x sisse c("Ben", "Jane", "Suzi", "Josh", "Carol")) {
printida (x)
}

Pange tähele, et väljund on täpselt sama, mis varem:

R-i hüppe avaldused

Kaks lauset võimaldavad teil tsükli iteratsiooni vahele jätta: katkestus ja järgmine. Nad saavutavad selle erineval viisil. Peaksite veenduma, et teate nende kahe erinevust.

Vaheaja märksõna

Kui tsükkel kohtab enda sees katkestuslauset, sulgeb see tsükli kohe. Kuna programm väljub tsüklist pärast murdemärksõna tabamist, ei käivita see järelejäänud koodi uuesti:

päeva "esmaspäev", "teisipäev", "kolmapäev", "neljapäev", "reede", "laupäev",
"pühapäev")

jaoks (x sisse päeva) {
kui (x == "laupäev") {
murda
}

printida (x)
}

Ülaltoodud silmus prinditakse välja kõik tööpäevad, kuid mitte kumbki nädalavahetuse päev.

Järgmine märksõna

Ka järgmine märksõna jätab iteratsiooni vahele, kuid erinevalt pausist ei sulge next tsüklit kohe. Avatuks jääv tsükkel tähendab, et praeguses ahelas ei käivitu ühtegi lisakoodi, kuid järgmine iteratsioon jätkub plaanipäraselt:

päeva "esmaspäev", "teisipäev", "kolmapäev", "neljapäev", "reede", "laupäev",
"pühapäev")

jaoks (x sisse päeva) {
kui (x == "laupäev") {
järgmiseks
}

printida (x)
}

See tsükkel väljastatakse igal tööpäeval ja pühapäeval, kuid seda ei prindita välja laupäeval.

Näide silmuste kohta R-s

On palju erinevaid olukordi, kus silmused on R-s kasulikud. Need võivad olla suurepärane viis korduvate arvutuste tegemiseks, näiteks numbrite lisamiseks, et saada kogusumma:

tellimused 23.4, 699.8, 1042.0)
kokku 0.0

jaoks (telli sisse tellimused) {
kokku }

kass ("kokku on $", kokku, "\n")

See näide lisab loendi iga üksiku tellimuse kogusumma kogusummale.

Teise võimalusena võib for-silmus aidata teil kiiresti ja lihtsalt väljastada suures koguses hästi vormindatud andmeid:

day_totals 567.82, 364.72, 762.81, 354.99, 622.87)

jaoks (päev sisse1:length (day_totals)) {
kass ("Päev #", päev, ": $", day_totals[day],"\n")
päev 1
}

Saate kasutada tsüklit, et printida välja iga nädalapäev ja selle konkreetse päeva müügi kogusumma.

Saate kasutada for-tsüklit, et arvutada tulemusi ja teha need väljaspool for-tsüklit kodeerimiseks kättesaadavaks, et saada mitmesugust teavet.

testi_tulemused 67, 89, 72, 44)
punktisumma_kokku 0
testide_arv 0

jaoks (skoor sisse test_scores) {
punktisumma_kokku testide_arv 1
}

keskmine_skoor print (keskmine_skoor)

Ülaltoodud silmus arvutab õpilaste testis saavutatud keskmise tulemuse.

Kõik, mida peate R's for Loopsi kohta teadma

Oluline on õppida, kuidas käivitada teatud arv silmuseid või itereerida andmehulka ilma fikseeritud pikkuseta.

Olenemata sellest, kas peate tegema massiiviga korduvaid arvutusi, printima loendi kõik elemendid või kuvama suurt hulka andmeid loetaval kujul, võivad R's for loop aidata.

Silmuste aluseks olevate põhimõtete mõistmine on teie arsenalis väärtuslik oskus ning selle valdamine võib aidata teil kirjutada lihtsat ja hõlpsasti loetavat koodi.