4. Programos R pradmenys


Šio skyriaus medžiaga vis dar rengiama!
Dabartinė versija skirta tik peržiūrėjimui ir gali smarkiai keistis.







Programa „R“ yra duomenų analizei skirtas įrankis. Dirbant juo duomenų analizės komandos užrašomos programos kodu. Šiame skyriuje apžvelgsime bazinius šios programos sintaksės (kodo rašymo taisyklių) elementus, „R“ duomenų tipus („R“ klases) ir „R“ duomenų stuktūras.

Tikslas – įgyti darbo programa „R“ pradmenis: susipažinti su pagrindiniais „R“ kodo elementais, svarbiausiais „R“ duomenų tipais bei „R“ duomenų struktūromis.

Jūsų užduotys skaitant šį skyrių:

  1. Išmokti suprasti ir naudoti „R“ sintaksės elementus, tokius kaip komentarai ir funkcijos (komandos). Sužinoti, kas yra funkcijos argumentas;
  2. Išmokti sukurti „R“ objektą (atlikti priskyrimo operaciją) ir sužinoti, kokie pavadinimai objektams yra leistini;
  3. Išmokti apibūdinti svarbiausius šiam kursui kompiuterinius „R“ duomenų tipus (skaičius, faktorius, tekstinius ir loginius kintamuosius) ir sužinoti, kokius statistinius duomenų tipus (kategorinius nominaliuosius, kategorinius ranginius, kiekybinius diskrečiuosius, kiekybinius tolydžiuosius ar nei vienas) jie atitinka.
  4. Išmokti programoje „R“ kurti duomenų sekas („R“ vektorius) ir atlikti paprastus veiksmus su šiomis sekomis („DataCamp“ užduotis).

Pagrindinė ir svarbiausia praktinė jūsų šios dienos užduotis pateikta sistemoje „DataCamp“. Jos aprašymas:

Užduotis 4.1 Norėdami praktiškai susipažinti su šiame skyriuje išdėstyta medžiaga, atlikite pamokos „Introduction to R“ 1, 2 ir 4 skyrius (įvadas, vektoriai ir faktoriai) sistemoje „DataCamp“ (1-2 val.). Prie sistemos prisijunkite naudodami savo VU studento el.pašto adresą. Kitaip nebus galimybės patikrinti, ar užduotį tikrai atlikote.

4.1 Pagrindiniai R kodo sintaksės elementai

Turbūt pamenate lietuvių kalbos pamokas apie „sintaksę ir skyrybą“. Jų metu mokėtės rašyti sakinius, taisyklingai sujungti įvairias jų dalis, tokias kaip aplinkybės, bei taisyklingai jas atskirti tinkamais skyrybos ženklais. Kompiuterijoje taip pat yra terminas „sintaksė“, kuriuo nusakoma kompiuterinės kalbos rašymo taisyklių visuma.

Sintaksė (kompiuterijoje) yra kompiuterinės kalbos rašymo taisyklių visuma.

Jūsų uždavinys analizuojant šį poskyrį – išmokti atpažinti kelis pagrindinius „R“ programos kodo sintaksės elementus bei susipažinti su šioje mokomojoje medžiagoje (svetainėje) naudojamu jų spalviniu žymėjimu.

4.1.1 R kodo komentarai (#)

Vienas iš „R“ kalbos elementų yra komentaras. Grotelių ženklas (#) šalia „R“ komandų reiškia, kad tai komentaro pradžia. To, kas yra parašyta po grotelių, programa „R“ neskaito. Šitokiu būdu galime rašyti pastabas patys sau:

# Tai komentaras, kurio R neskaito

Komentaro ženklas galioja iki eilutės pabaigos, o rašant iš naujos eilutės – nebegalioja, tad norint tęsti komentarą kitoje eilutėje reikia groteles rašyti iš naujo:

# Tai komentaras,
# kuris tęsiasi per
# kelias eilutes

Tam, kad būtų paprasčiau susigaudyti, modernios programos įprastai skirtingomis spalvomis paryškina įvairius „R“ kodo elementus. Konkrečios spalvos ir paryškinimo būdas priklauso nuo naudojamos programos ir pasirinktų nustatymų. Šioje elektroninėje knygoje komentarai bus išryškinami tamsiai mėlyna spalva (kaip matote pavyzdyje virš šios pastraipos).

Dirbdami programa „RStudio“, komentarus galite uždėti ir nuimti naudodami sparčiųjų klavišų kombinaciją Ctrl+Shift+C.

Užduotis 4.2

  1. Atsidarykite „RStudio“ redaktoriaus langą, jame – „R Script“ dokumentą. Jei dokumentas jau buvo atidarytas, naujo galite nekurti.
  2. Pirmoje eilutėje užrašykite „Author:“ ir savo vardą. Antroje – „Date:“ ir šios dienos datą.
  3. Abi eilutes pažymėkite pele.
  4. Naudodami greitųjų klavišų kombinaciją, eilutę užkomentuokite.
  5. Naudodami tą pačią kombinaciją atkomentuokite ir vėl užkomentuokite (t. y., įsitikinkite, kad ta pati kombinacija atlieka du veiksmus ir veikia tinkamai).

4.1.2 Rezultatų ženklinimas (##)

Šioje svetainėje prieš rezultatus, kuriuos apskaičiuoja programa „R“, bus padedami du grotelių (t.y., komentaro) simboliai iš eilės (##) ir rezultatų tekstas bus nuspalvinamas pilkai:

## tai rezultatas, kurį pateikė R

Pavyzdys: sudėjus 2 ir 3 (šią komandą parašome mes) atsakymas yra 5 (atsakymą apskaičiuoja ir parašo programa „R“):

2 + 3
## [1] 5

Jei rezultatas bus apskaičiuojamas dirbant programa „R“, tai šių dviejų grotelių nepamatysite, nes dirbant programa ir taip aišku, kur jūsų parašyta komanda, o kur kompiuterio atsakymas.

Užduotis 4.3 Programos „RStudio“ komandų lange (konsolėje) parašykite matematinį veiksmą 3 + 2. Kokį rezultatą gavote? Ką jis reiškia? Ar matote grotelių simbolį (##)?

4.1.3 Elementų eilės numerių žymėjimas: [ ]

Praeitame pavyzdyje pastebėjote, kad eilutės pradžioje laužtiniuose skliaustuose atsirado papildomas skaičius [1]. Jis nurodo tos eilutės pirmojo elemento eilės numerį (pavyzdyje jo reikšmė buvo 5, o eilės numeris – 1). Aišku, šiuo atveju užrašas [1] duoda mažai naudos. Tačiau yra labai patogus, kai atsakymo elementų yra daug ir jie netelpa į vieną eilutę. Tokiu atveju laužtiniuose skliaustuose nurodomas kiekvienos eilutės pirmojo elemento eilės numeris, pvz.:

##  [1]  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28
## [20]  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47
## [39]  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66
## [58]  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85
## [77]  86  87  88  89  90  91  92  93  94  95  96  97  98  99 100

Pavyzdyje matome, kad elemento, kurio eilės numeris yra [69] reikšmė yra 78.

Programoje „R“ elementų numeravimas (indeksavimas) prasideda nuo 1. T. y., indeksas „1“ reiškia, kad elemento eilės numeris yra pirmas.

Kai kuriuose kituose programose indeksai prasideda nuo 0, o tai nėra taip patogu.

Užduotis 4.4 „RStudio“ komandų lange parašykite komandą 595:200, kuri sukurs mažėjančių skaičių seką nuo 595 iki 200. Kokios elementų, kurių eilės numeriai 20 ir 380 reikšmės?

4.1.4 Kitų elementų spalvinis žymėjimas

Skaičiai, simbolių eilutės, loginiai kintamieji bus išryškinami jiems būdingomis spalvomis:

# Šioje eilutėje komentaras
objekto_pavadinimas
335  # Skaičius
TRUE # Loginė reikšmė
"simbolių eilutė (tekstas) rašoma kabutėse"
Užduotis 4.5 Aukščiau esantį programos kodo pavyzdį nukopijuokite į „RStudio“ redaktoriaus langą („R script“ dokumentą). Kokiomis spalvomis nusidažė skirtingi „R“ sintaksės elementai?

4.1.5 Programos kodas: blokais ir tekste

Didesni kodo pavyzdžiai bus pateikiami blokais su spalvomis išryškintais elementais, kaip matėte ankstesniuose pavyzdžiuose:

# Sudedame 5 bei 4 ir ištraukiame šaknį.
# Atsakymas bus 3:
sqrt(5 + 4)
## [1] 3

Kodo pavyzdžiai gali būti pateikiami ir toje pačioje eilutėje su tekstu, pvz., sqrt(5 + 4). (Komanda sqrt() reiškia „kvadratinė šaknis“, angl. square root). Žinokite, kad tai programos kodas.

4.1.6 Specialiosios paskirties reikšmės

„R“ kalboje yra rezervuotų specialiosios paskirties reikšmę turinčių žodžių (žr. lentelėje 4.1). Programa „RStudio“ juos atpažįsta ir netgi nudažo kita spalva.

Lentelė 4.1: Specialiosios paskirties reikšmę turintys žodžiai.
PaaiškinimasŽodisRezultatas „R“ komandų lange
Tuščias narys;
tam tikrame kontekste reiškia „ištrinti“
NULLNULL
Trūkstama reikšmė
(trumpinys nuo angl., NA – not available, t.p., missing value)
NANA
Negalima skaitinė reikšmė, skaitinė neapibrėžtis
(angl., NaN – not a number)
NaNNaN
(Teigiama) begalybėInfInf
Neigiama begalybė-Inf-Inf
Loginė reikšmė „netiesa“FALSEFALSE
Loginė reikšmė „netiesa“ (sutrumpintai)FFALSE
Loginė reikšmė „tiesa“TRUETRUE
Loginė reikšmė „tiesa“ (sutrumpintai)TTRUE


Pavyzdžiai, kaip gaunamos arba užrašomos šios reikšmės:

0/0 # neapibrėžtas skaičius (NaN - not a number)
## [1] NaN
log(0) # neapibrėžtumas: labai mažas skaičius
## [1] -Inf
2 > 10 # „2 daugiau už 10“; atsakymas – loginė reikšmė „netiesa“ 
## [1] FALSE
F # loginė reikšmė „netiesa“ (sutrumpintai)
## [1] FALSE
6 != 7 # „6 nelygu 7“; atsakymas – loginė reikšmė „tiesa“
## [1] TRUE
T # loginė reikšmė „tiesa“ (sutrumpintai)
## [1] TRUE
NULL
## NULL

Užduotis 4.6 Funkcijos, kurios prasideda žodžiu is, įprastai atlieka patikrinimą ir pateikia atsakymą TRUE arba FALSE. Pvz., is.na() tikrina, ar reikšmė yra trūkstama, is.nan() – ar tai negalima skaitinė reikšmė. Įvykdykite komandas (kiekvieną atskiroje eilutėje) is.na(NA), is.na(NaN), is.nan(NA), is.nan(NaN) ir padarykite išvadas:

  1. ar NaN yra praleistos reikšmės tipas;
  2. ar NA yra negalimos skaitinės reikšmės tipas.

4.2 R objektai

Viskas, kas „R“ atmintyje yra išsaugota tam tikru pavadinimu, vadinama objektais. Išsaugoti galime skaičius, duomenų sekas, duomenų lenteles ir netgi funkcijas (pav., 4.1). „R“ objektai dar vadinami kintamaisiais kompiuterijos prasme (angl. variable), nes pavadinimu žymimą reikšmę galime pakeisti.

Programos „R“ objektų tipų pavyzdžiai.

Pav. 4.1: Programos „R“ objektų tipų pavyzdžiai.

4.2.1 Objektų kūrimas

Veiksmas, kurio metu kintamajam priskiriama reikšmė (t. y., kurio metu sukuriamas objektas), vadinamas priskyrimu (angl., assignmemt).

„R“ objektai sukuriami naudojant taip vadinamą priskyrimo operatorių: arba <- (įprastinis „R“ naudotojo pasirinkimas), arba =. Rodyklė <- susideda iš simbolių „mažiau“ ir „minus“, parašytų be tarpo. Programoje „RStudio“ įterpiama naudojant kombinaciją Alt+-. Kartais paspaudus šią kombinaciją įterpiamas operatorius =. Tokiu atveju programa mano, kad esamoje situacijoje šis operatorius yra tinkamesnis. Būtinai atkreipkite dėmesį į tai, kad iš kiekvienos operatoriaus pusės yra palikta po tarpelį. Tai suteikia aiškumo.

Sukurkime objektą objekto_pavadinimas kurio reikšmė būtų skaičius keturi:

# Skaitinės reikšmės priskyrimas
objekto_pavadinimas = 4
# Skaitinės reikšmės priskyrimas
objekto_pavadinimas <- 4

Sakoma, kad objektui objekto_pavadinimas priskiriama reikšmė 4. Jei parašome sukurto kintamojo pavadinimą, įprastai atspausdinama jo reikšmė (tai vadinama spausdinimu pagal nutylėjimą):

objekto_pavadinimas
## [1] 4

Taip pat tą patį rezultatą galime pasiekti naudodami komandą print() (šiuo atveju tai išreikštasis spausdinimas, nes parašome komandą):

print(objekto_pavadinimas)
## [1] 4

Vėliau sukurtą objektą galima panaudoti atliekant tolimesnius veiksmus.

Panagrinėkime pavyzdį. Sukurkime objektą ir priskirkime jam reikšmę:

nupirkom_kiausiniu <- 10

Atspausdinkime sukurtą objektą (reikšmės spausdinimas pagal nutylėjimą):

nupirkom_kiausiniu
## [1] 10

Sukurkime dar vieną objektą:

suvalgem_kiausiniu <- 6

Atspausdinkime ir jį:

suvalgem_kiausiniu
## [1] 6

Su šiais dviem objektais galime atlikti matematinius veiksmus tarsi tai būtų skaičiai, kuriuos priskyrėme:

liko_kiausiniu <- nupirkom_kiausiniu - suvalgem_kiausiniu

Atspausdinkime rezultatą:

liko_kiausiniu
## [1] 4

Reikšmes taip pat galima priskirti naudojant ir = simbolį:

po_papildymo = liko_kiausiniu + 3
po_papildymo
## [1] 7

Užduotis 4.7

  1. Naudodami operatorių <- sukurkite objektus pavadinimais „a“, „b“ ir „c“, kurių reikšmės būtų atitinkamai 96, -6, 0.01.
  2. Visus šiuos objektus sudėkite. Ar rezultatas toks, kokio tikėjotės?

4.2.2 Darbinė erdvė

Pastabos. Atkreipkite dėmesį į tai, kad vienodai skambantys terminai (pvz., „objektas“, „kintamasis“) statistikos ir kompiuterijos prasme gali turėti susijusias, bet skirtingas reikšmes. Tikiuosi, kad greit susigaudysite ir tai nekels problemų.

Galime apsibrėžti, kad darbinė erdvė, arba darbinė aplinka (angl., workspace, arba working environment), – tai visi darbinėje „R“ atmintyje esantys (sukurti ar įkelti) objektai. Šiuo metu darbinėje „R“ atmintyje esančių objektų pavadinimai yra išvardinti lange „Environment“ (pav. 6.1 langas Nr. 3).

„Išvalyti darbinę erdvę“ – reiškia ištrinti visus „R“ atmintyje esančius objektus. „Išsaugoti/užkrauti darbinę erdvę“ – šiuos objektus išsaugoti į kietąjį diską ar vėl įkelti į „R“.

Užduotis 4.8 Į konsolę nukopijuokite programos kodą x <- 2 ir paspauskite klavišą Enter. Lange „Environment“ atsiras objektas, pavadinimu „x“. Ar matote jį?

Jei norime, kad „R“’as konsolėje išvardintų objektų, šiuo metu esančių jo atmintyje, pavadinimus, galime naudoti komandą objects():

objects() # R'as išvardija, kas jo darbinėje atmintyje

Dažnai naudojamas komandos objects() sinonimas yra komanda ls(), kuri daro visiškai tą patį:

ls() # R'as išvardija, kas jo atmintyje

Norėdami pašalinti objektą, naudojame funkciją remove() arba rm(), kurios skliaustuose įrašome objekto pavadinimą, pvz.:

remove(suvalgem_kiausiniu)
Kaip analizuojant „R“ kodą pagal skliaustelius atpažinti, kur yra įprastinė funkcija, o kur kitoks objektas? Pradiniam susigaudymui galima sakyti, kad po funkcijos rašomi paprastieji apvalieji skliausteliai ( ), pvz., sum(). Jei parašyti laužtiniai skliausteliai [ ] arba [[ ]], vadinasi, tai kitoks objektas (ne funkcija).

4.2.3 Objektų pavadinimai

Esminiai dalykai, kuriuos reikia žinoti dirbant su „R“ objektų pavadinimais yra:

  1. leistini simboliai pavadinimuose;
  2. ar programa atskiria didžiąsias ir mažąsias raides;
  3. rekomenduojami simboliai objektų pavadinimuose ir pavadinimų rašymo stilius (plačiau nagrinėjama skyriuje 8.4).

Leistini simboliai pavadinimuose

Programoje „R“ objektų pavadinimuose pirmasis simbolis privalo būti raidė. Pirmas gali būti ir taškas, bet tada objektas tampa paslėptas, o tai jau pažengusiųjų lygio tema, tad tokie pavadinimai nerekomenduojami. Antras ir tolimesni simboliai gali būti didžiosios ir mažosios raidės, skaičiai, taškas (.) ir apatinis brūkšnys (_).

Ar didžiosios ir mažosios raidės – svarbu?

Programa „R“ skirtingai reaguoja į didžiąsias ir mažąsias raides. Tad pavadinimai T ir t arba c ir C, arba mano_mama, mano_Mama ir mano_MAMA yra suprantami kaip skirtingi žodžiai. Skirtingas programų reagavimas į didžiąsias ir mažąsias raides angliškai vadinamas terminu „case sensitive“.

Pavadinimų rašymo stilius (rekomendacijos)

Ar pamenat filmuką „Kung-fu Panda“? Jame kung-fu meistrai naudojo skirtingus kovos stilius: tigro, gervės, gyvatės… Panašiai ir rašant kintamųjų pavadinimus, kuriuose norima pavartoti kelis žodžius, naudojami įvairūs stiliai:

  • DvikuprioKupranugarioStilius – žodžiai rašomi iš didžiosios raidės, be tarpų (angl. big/upper camel case);
  • vienkuprioKupranugarioStilius – visi žodžiai, išskyrus pirmąjį, rašomi iš didžiosios raidės, be tarpų (angl. small/lower camel case);
  • taškuotojo.leopardo.stilius – žodžiai atskiriami taškais;
  • gyvatės_stilius – visos raidės mažosios, o žodžiai atskiriami apatiniais brūkšniais (angl. snake case).

Šio kurso metu daug dėmesio skirsime darbui „Tidyverse“ sistema. Todėl objektų pavadinimus rašysime pagal „Tidyverse“ stiliaus gido rekomendacijas – naudosime gyvatės_stilių, kur:

  1. pavadinime naudojamos tik mažosios raidės, skaičiai ir apatinis brūkšnys _;
  2. pirmasis simbolis pavadinime – visada raidė (mažoji).

Taip pat stenkitės kurti prasmingus pavadinimus, pvz., ugis, svoris, amzius (vietoje x, y ar z), kurie padėtų lengviau suprasti jūsų kodo esmę ir kitam žmogui (tarkim, jums po 6 mėnesių) būtų paprasčiau jį suprasti.

Pastebėsite, kad kitų autorių kode objektų pavadinimuose taškas (.) yra vartojamas gana dažnai. Deja, tam tikrame kontekste jis įgyja specialiąją reikšmę. Todėl taško „R“ objektų pavadinimuose venkite.

Kaip kurti „R“ objektų pavadinimus, kad vėliau nekiltų problemų?

Naudotis „Tidyverse“ stiliaus rekomendacijomis:

  1. pirmasis simbolis pavadinime privalo būti mažoji raidė;
  2. kiti simboliai – tik mažosios raidės, skaičiai ir apatiniai brūkšniai _;
  3. pavadinimai turėtų būti prasmingi, bet trumpi.



Nors pastebėsite, kad kai kurių autorių kode objektų pavadinimuose taškas (.) yra vartojamas gana dažnai, tam tikrame kontekste jis įgyja specialiąją reikšmę. Todėl taško „R“ objektų pavadinimuose venkite.

Taško „R“ objektų pavadinimuose venkite.

Lietuviškų (tiksliau, neangliškų) raidžių „R“ objektų pavadinimuose taip pat siūlau vengti. Gali kilti problemų, jei nustatyta netinkama lokalė.

Papildoma. Visą „Tidyverse“ stiliaus gidą galite rasti adresu style.tidyverse.org .

Užduotis 4.9 Kurie iš šių „R“ objektų pavadinimų (1) yra leistini programoje „R“ apskritai ir kurie (2) rekomenduojamų vartoti simbolių prasme yra tinkami pagal „Tidyverse“ stiliaus gidą?

  1. pirmoobjektopavadinimas <- 1
  2. PIRMOOBJEKTOPAVADINIMAS <- 1
  3. 1objektopavadinimas <- 1
  4. pirmo.objekto.pavadinimas <- 1
  5. Objekto.pavadinimas.1 <- 1
  6. obj.....nr..........1 <- 1
  7. pirmo!objekto!pavadinimas <- 1
  8. o001452475584 <- 1
  9. pirmo_objekto_pavadinimas <- 1
  10. pirmo_objekto$pavadinimas <- 1
  11. pirmoObjektoPavadinimas <- 1
  12. 0pavadinimas0 <- 1
  13. PIRMO_OBJEKTO_PAVADINIMAS <- 1
  14. _objektas <- 1
  15. obj_1 <- 1

Netaisyklingi pavadinimai

Programoje „R“ yra mechanizmas, skirtas naudoti ir netaisyklingus pavadinimus: pavadinimus reikia įrašyti tarp atgal pasvirusių simbolių, vadinamų – graviais ` (angl. backtick). Šis simbolis įprastai yra šalia Esc ir ~.

`1 netaisyklingas pavadinimas +` <- 22
`1 netaisyklingas pavadinimas +`
## [1] 22

Kai kuriais atvejais, tarkim, dirbant papildiniu „R Commander“, šis metodas neveiks arba rezultatai bus netikėti (pvz., klaida). Tad dirbant „R Commander“ rekomenduoju naudoti tik taisyklingus objektų pavadinimus.

4.3 R funkcijos

Viskas, kas vyksta programoje „R“ – sudėtis, lango atidarymas, paveikslo nubraižymas, duomenų išsaugojimas, spalvos pakeitimas – yra kokios nors komandos vykdymo rezultatas. Komandas galima suskirstyti į įprastines funkcijas ir operatorius.

4.3.1 Įprastinės funkcijos ir jų argumentai

Funkcija – tai veiksmas ar komanda, kurią nurodome atlikti kompiuteriui. Ji užrašoma kaip vienas žodis be tarpelių (t.y., susidedantis iš raidžių, skaičių, taškų ir/arba apatinių brūkšnių), kurio gale yra paprastieji apvalūs skliausteliai (). Atkreipkite dėmesį į tai, kad tarp komandos pavadinimo ir skliausto tarpų nepaliekame. Šioje svetainėje funkcijos bus paryškintos žydrai, pavyzdžiui:

r_funkcija()

Pastaba: jūsų kompiuteryje užrašas r_funkcija() neveiks, nes tai tik pavyzdys.

Komandos skliausteliuose rašome taip vadinamus funkcijos argumentus (terminai „funkcijos“, „argumentai“ – visai tokie, kaip per matematikos paskaitą):

r_funkcija(argumento_reikšmė)

Argumentai gali turėti pavadinimus ir šie bus pabraukti (kol kas nesijaudinkite, jei neaišku, kas tie argumentai ir t.t. Dabar svarbiausia, kad suprastumėte tik jų spalvinį žymėjimą):

r_funkcija(argumento_pavadinimas = argumento_reikšmė)

Jei argumentas turi pavadinimą, jo reikšmė nurodoma naudojant = (bet ne operatorių <-, apie kurį rašoma skyriuje „Objektų kūrimas“).

Pavadinimą turinčio funkcijos argumento reikšmė nurodoma naudojant operatorių = (bet ne <-).

Pavyzdys, funkcija log(), kuri įprastai apskaičiuoja natūrinį logaritmą. Apskaičiuokime \(ln(100)\):

log(100)
## [1] 4.60517

Funkcija log() turi argumentą x, tad galime užrašyti kitaip ir gauti tą patį rezultatą:

log(x = 100)
## [1] 4.60517

Užduotis 4.10

  1. Programos „RStudio“ lange „Console“ parašykite žodį „log(“ (programa automatiškai padės uždarantį skliaustelį). Tada paspauskite klavišą Tab. Programa parašys, kokie galimi funkcijos log() argumentų pavadinimai (juos galėsite pasirinkti pele). Įvardinkite šiuos argumentus.
  2. Analogiškai išsiaiškinkite, kokie galimi funkcijos data.frame() argumentų pavadinimai. Kol kas jų reikšmės suprasti nereikia.

Atlikdami pratimą išsiaiškinome, kad iš tiesų funkcija log() turi kelis argumentus, ir kai argumentų daug, jų parašymas funkcijos viduje suteikia aiškumo:

log(100, base = 10)
## [1] 2

Turbūt supratote, kad buvo pakeistas logaritmo pagrindas („base“) į 10 ir apskaičiuota išraiška \(log_{10}(100)\). Tuo tarpu užrašas be argumentų pavadinimų nėra toks aiškus:

log(100, 10)
## [1] 2
Jei norite daugiau sužinoti apie funkciją log(), komandų lange įrašykite ?log (prieš funkcijos pavadinimą padėkite klaustuką) ir pagalbos bei dokumentacijos lange „Help“ (pav. 6.1 langas Nr. 4) pamatysite aprašymą.

Jei naudojame kelis funkcijos argumentus, juos atskiriame kableliais (,), o po kablelio padedame tarpelį:

r_funkcija(reikšmė_1, reikšmė_1, reikšmė_3)

Arba:

r_funkcija(arg_1 = reikšmė_1, arg_2 = reikšmė_1, arg_3 = reikšmė_3)

Pavyzdys – funkcija c(), kuri skirta kurti duomenų sekas (vektorius):

c(1, 16, 99, -3, 58)
## [1]  1 16 99 -3 58

Funkcija c() bus viena iš dažniausiai naudojamų, todėl ją įsiminkite labai gerai.

Užduotis 4.11

  1. Apskaičiuokite dvejetainį logaritmą skaičiui 65. Koks atsakymas?
  2. Sukurkite seką („R“ vektorių) iš skaičių: 1; 10; 100; 1000; 10000.

4.3.2 Operatoriai

„R“ operatoriai – tai pavieniai simboliai ar kelių simbolių sekos, atliekančios tam tikrus veiksmus (t. y., operacijas). Iš principo, operatorius – tai „R“ funkcija, tik užrašoma ne žodžiais, o simboliais. Pavyzdžiui, sudėties operatorius +:

-25 + 43
## [1] 18

Operatoriai būna:

  1. Aritmetiniai: atlieka matematines operacijas, pvz., +, -;
  2. Palyginimo: lygina reikšmes, pvz., <;
  3. Loginiai: (& – IR, | – ARBA, ! – NE) – įprastai naudojami tikrinant sąlygas, pvz., ar geras IR turtingas;
  4. Priskyrimo: pvz., <-, -> ar = – skirti kurti „R“ objektus;
  5. Skaičių sekų kūrimo, pvz., :;
  6. Kitokie, pvz., funkcijų jungimo į grandinę operatorius %>%.

Užduotis 4.12 „RStudio“ pagalbos lango („Help“) paieškos laukelyje parašykite nurodytus operatorius ir suraskite reikiamą informaciją apie juos:

  1. <- – kaip vadinasi tema?
  2. | – kaip vadinasi tema?
  3. + – kaip vadinasi tema ir ar dokumentacijoje pateikta pavyzdžių?
  4. : – kam skirtas šis operatorius ir kaip juo naudotis?

4.4 R duomenų struktūros

Terminas „duomenų struktūra“ nurodo formą, kuria saugomi duomenys. Jei duomenis prilygintume mėgintuvėliams, tai duomenų struktūros būtų tam tikro tipo dėžutės ir laikikliai, skirti tam tikru būdu mėgintuvėlius išdėlioti ir saugoti. Programoje „R“ yra 4 pagrindinės duomenų struktūros:

  1. atominis vektorius (įprastai vadinamas tiesiog vektoriumi; vector) – tai to paties duomenų tipo reikšmių seka. (Žodis „atominis“ ir reiškia, kad duomenys yra vieno tipo). Neturi nei eilučių, nei stulpelių. Ši duomenų struktūra atitinka duomenų eilutę arba kintamąjį statistikos prasme. Mūsų kurso metu ši struktūra yra labai svarbi. Pavyzdys: į vektorių surašomi visų Gyvybės mokslų centro (GMC) studentų ūgiai. Kitas pavyzdys, į vektorių surašomos visų GMC dėstytojų plaukų spalvos.

  2. matrica (matrix) – tai lentelės pavidalo duomenų struktūra, sudaryta tik iš vieno tipo duomenų. Turi eilutes ir stulpelius. Iš skaitinių reikšmių sudarytos matricos atitinka matricas, apie kurias mokoma per matematikos paskaitas. Naudojantis jomis efektyviai sprendžiami tiesinės algebros uždaviniai, pvz., atliekama pagrindinių komponenčių ar klasterinė analizės.

  3. duomenų lentelė (data.frame) – tai lentelės pavidalo duomenų struktūra (turi eilutes ir stulpelius), kurioje visi stulpeliai yra vienodo ilgio. Nuo matricos skiriasi tuo, kad skirtinguose stulpeliuose gali būti skirtingo tipo duomenys, tačiau tame pačiame stulpelyje būna tik to paties tipo duomenys. T. y., duomenų lentelės stulpeliai yra vienodo ilgio vektoriai. Tai pagrindinė duomenų struktūra, su kuria dirbsime šio kurso metu. Pavyzdys. Duomenų lentelė sudaryta iš 3 stulpelių: pirmame studentų ūgiai, antrame – tų pačių studentų plaukų spalvos, trečiame – vėlgi tų pačių studentų matematikos egzamino pažymiai.

  4. sąrašas (list) – tai duomenų struktūra, kurios kiekvienas elementas yra tarsi atskiras konteineris: skirtinguose konteieriuose gali būti skirtingo dydžio, skirtingo tipo ir netgi skirtingų duomenų struktūrų (vektoriai, matricos, duomenų lentelės ar net kiti sąrašai) duomenys. Tokiu būdu dažnai mums atsakymus pateikia įvairios „R“ statistinės analizės funkcijos. Pavyzdys. Sąrašas sudarytas iš 3 elementų: tiriamojo vardas, tiriamojo amžius, tiriamojo vaikų vardai. Akivaizdu, kad vardas ir amžius – skirtingi duomenų tipai. O vaikų skaičius skirtingas, todėl šis elementas kiekvieno tiriamojo atveju bus ne vienodo ilgio.

Šio kurso metu svarbiausios duomenų struktūros – vektoriai ir duomenų lentelės.

Kelios pastabos apie „R“ duomenų struktūras:

  1. Programoje „R“ nėra struktūros, kuri reprezentuoja skaliarinį dydį. Tad vienas skaičius ar viena tekstinio kintamojo reikšmė iš tiesų yra vektorius, kurio ilgis lygus vienam.
  2. Techniškai žiūrint, sąrašas irgi yra vektorius, o duomenų lentelė yra tam tikras sąrašo tipas, tad šios struktūros irgi yra vektoriai. Visgi, įprastai šio kurso metu sakydami „vektorius“, omenyje turėsime vienos rūšies duomenų seką.

4.5 Svarbiausi R duomenų tipai

Programa „R“ yra skirta darbui su duomenimis. Pagal prigimtį duomenys būna skirtingų tipų (pvz., skaičiai ar pavadinimai, kategorijos). Vieną klasifikaciją, kuri svarbi statistinei analizei, peržvelgėme teorinių paskaitų metu. Dėl praktinių (pvz., ar patogu dirbti) bei techninių (pvz., kiek vietos užima kompiuterio atmintyje) sumetimų kiekviena kompiuterinė duomenų analizės programa savaip apibrėžia duomenų tipus.

Reiktų žinoti, kad yra „teoriniai statistiniai“ ir „kompiuteriniai“ duomenų tipai.

Visi „R“ objektai turi savybę pavadinimu klasė (angl. class), kas reiškia, kad su skirtingos klasės objektais tos pačios funkcijos gali elgtis skirtingai (pvz., funkcija plot() braižo skirtingo tipo grafikus, funkcija summary() atlieka skirtingo tipo skaitines suvestines). Objekto klasę galime patikrinti naudodami funkciją class(). Per objektų klasių prizmę ir aptarsime svarbiausius programos „R“ duomenų tipus 4.2.

Lentelė 4.2: Pagrindiniai „R“ duomenų tipai.
Kompiuterinio duomenų tipo pavadinimas„R“ klasėAlternatyvus pavadinimasAtitinkamas statistinių duomenų tipasReikšmių užrašymo pavyzdys
Sveikieji skaičiai¹integerKiekybiniai1L, -65L, 0L
Realieji skaičiai¹numericdoubleKiekybiniai42, -0.6, 1.2e2, .3
Loginės reikšmės¹logicalbooleanAtitikmens neturiTRUE, FALSE
Ženklų eilutės¹
(tekstas)
characterstringsAtitikmens neturi"labas", 'A4'
Faktorius²factorKategoriniai

¹ – Pagrindinis (atominis) duomenų tipas.
² – Sudėtinis duomenų tipas (bus aptarta vėliau).

Aptarkime kiekvieną iš šių klasių plačiau.

4.5.1 Skaitiniai kintamieji

Prieš aptardami technines detales apie svarbiausius skaitinius „R“ duomenų tipus įsidėmėkite tai, kad:

  1. Klasė „integer“ tinka ir tolydiesiems, ir diskretiesiems (jei jie suapvalinti iki sveikųjų dalių) kiekybiniams duomenims reprezentuoti.
  2. Klasė „numeric“ taip pat tinka ir tolydiesiems, ir diskretiesiems kiekybiniams duomenims.

Abi skaitinių kompiuterinių duomenų klasės („numeric“ ir „integer“) yra tinkamos statistiniams kiekybiniams kintamiesiems reprezentuoti.

Klasė „numeric“

Klasė „numeric“ – tai realieji skaičiai, t. y., skaičiai su kableliu. Šios klasės objektai kompiuterijoje dar vadinami „double“ (nuo „double-precision floating-point format“). Visiems skaičiams (ne tik „numeric“ klasės) programoje naudojamas tam tikras spalvinis žymėjimas.

  1. Be papildomų nurodymų programoje „R“ parašytas skaičius suprantamas kaip klasės „numeric“ atstovas, pvz., 0, 42 ar -3.2. Konsolėje parašykite class(42) ir įsitikinsite.
  2. Programoje „R“ sveikoji ir dešimtoji dalys skaičių rašomos atskiriant tašku, pvz., 10.66, o ne kableliu 10,66 (atkreipkite dėmesį į tai, kad kablelis paryškintas kita, skaičiams nebūdinga spalva). Taip yra todėl, kad tai, kas lietuviškai vadinama „kableliu“, angliškai užrašoma kaip taškas (žiūrėti pavyzdžius).
  3. Jei sveikoji skaičiaus dalis yra 0, tai jos galime nerašyti, pvz., .01 yra tas pats, kas 0.01, o -.2 atitinka -0.2. Šitoks užrašymas gali būti naudojamas ne tik programoje „R“, bet ir mokslinėje literatūroje.
  4. Realieji skaičiai gali būti užrašomi ir inžineriniu-moksliniu formatu naudojant simbolius \(e\) arba \(E\) (abiem atvejais ta pati reikšmė), kur 1e4 reiškia \(1\cdot10^4\), o 2.3e-2 reiškia \(2.3\cdot10^{-2}\). Pvz., 1e2, -1.2E-2.
  5. Kad ir kokiu būdu būtų užrašyti, programoje „RStudio“ skaičiai yra išryškinami ta pačia skaičiams būdinga spalva (ji priklauso nuo pasirinktos spalvų schemos): -1.2E-2, 2, .06. (Šioje svetainėje žaliai išryškinami tik sveikieji skaičiai, pvz., lentelėje 4.2).
  6. „R“ duomenų statistiniuose aprašymuose trumpinama num arba dbl.
  7. Tinka reprezentuoti bet kokiems kiekybiniams statistinių duomenų tipams.

Svarbu! Į programą „R“ įvestų skaičių sveikoji ir dešimtoji dalis visada atskiriama tik tašku, bet ne kableliu.

Skaičių sekos užrašymo pavyzdys ir jos atvaizdavimo grafiškai pavyzdys:

seka_num <- c(125.4, 122.3, 100, 111.2, 101, 121, 122, 119.3)
plot(seka_num)

Užduotis 4.13 „RStudio“ konsolėje įvykdykite po vieną komandą ir stebėkite, koks atsakymas (gali būti ir klaida):

  1. 1
  2. class(1)
  3. 1e2
  4. 1E3
  5. 1e-3
  6. 1E-2
  7. 1.691e2
  8. class(1.691e2)
  9. str(1e2) # str() - objekto struktūra
Ar suprantate kiekvieną šio kodo eilutę?

Klasė „integer“

Klasei „integer“ priklauso teigiami ir neigiami sveikieji skaičiai bei nulis:

  1. Sveikasis skaičius kompiuterio atmintyje užima mažiau vietos nei realusis ar kompleksinis. Mūsų kurso metu naudojamiems duomenims šis skirtumas nebus praktiškai reikšmingas.
  2. Norint, kad skaičius būtų saugomas kaip sveikasis, jo pabaigoje parašome L didžiąją raidę, pvz., 4L.
  3. Sveikasis skaičius įprastai gali būti ne mažesnis nei -2147483647 ir ne didesnis nei 2147483647. Tačiau to mums prisiminti nereikia, nes jei parašytume netinkamo dydžio skaičių, „R“ mums apie tai praneš įspėjimo žinute.
  4. „R“ duomenų statistiniuose aprašymuose trumpinama int.
  5. Įprastai naudojamas kiekybiniams diskretiesiems statistiniams kintamiesiems reprezentuoti, bet tinka ir iki sveikosios dalies suapvalintiems tolydiesiems.

Užduotis 4.14

  1. „RStudio“ redaktoriaus lange parašykite 100, L, 100L. Kokiomis spalvomis paryškino užrašą 100L?
  2. Konsolėje įvykdykite kodą 100L. Koks atsakymas?
  3. Konsolėje įvykdykite kodą class(100L). Koks atsakymas?
  4. Įvykdykite kodą: str(100L) # str() - objekto struktūra

4.5.1.1 Klasė „complex“

Tai kompleksiniai skaičiai. Sukuriami prie menamosios dalies skaitmenų prirašius i mažąją, pvz., 32 - 1i arba 3i. Šio kurso metu kompleksinių skaičių nenaudosime.

Užduotis 4.15

  1. Šiame tinklapyje menamoji kompleksinių skaičių dalis paryškinama neteisingai. Tačiau „RStudio“ redaktoriaus lange – teisingai. Parašykite 6 + 8i. Ar programa visus elementus išryškino skaičiams būdinga spalva?
  2. Įvykdykite kodą: str(6 + 8i)

4.5.2 Loginės reikšmės

Programoje „R“ yra dvi loginės reikšmės TRUE (taip, tiesa) ir FALSE (ne, netiesa), kurios priklauso klasei „logical“:

  1. Atsiranda atliekant palyginimą arba sąlygos tikrinimą, pvz., 1 < -1 (lyginame 1 ir -1) arba is.numeric(24) (tikriname, ar 24 priklauso klasei „numeric").
  2. Loginės reikšmės gali būti užrašomos ir sutrumpintai (T arba F), bet visą laiką tik didžiosiomis raidėmis.
  3. Atliekant matematinius veiksmus, loginės reikšmės automatiškai paverčiamos į skaičius: TRUE į 1, FALSE į 0. Tad veiksmo TRUE + TRUE + FALSE atsakymas bus 2.
  4. Jei pradiniai statistiniai duomenys užrašyti loginėmis reikšmėmis, prieš atliekant statistinę analizę, loginius kintamuosius įprastai reikia pasiversti į kategorinius naudojant funkciją factor() arba as.factor().
  5. Statistiniuose „R“ duomenų aprašymuose trumpinama: lgl, lgcl arba logi.

Užduotis 4.16

  1. Kam lygios šios išraiškos? Nurodykite konkretų atsakymą, arba kad „R“ neapskaičiuos (bus klaida). Nenaudokite programos „R“, apskaičiuokite mintinai:
    1. sum(TRUE, TRUE, TRUE, FALSE, TRUE)
    2. x <- c("vyras", "moteris", "vyras", "moteris", "moteris")
    sum(x == "moteris") # == atlieka palyginimą, o = priskyrimą
  2. Įvykdykite kodą: str(TRUE) # str() - objekto struktūra

4.5.3 Tekstiniai kintamieji

Ženklų ir simbolių eilutės (supaprastintai sakysime, kad tai tekstas tekstas) – priklauso klasei „character“, angliškai dar vadinamos terminu „strings“:

  1. Mūsų kurso metu tai bus pagalbinis duomenų tipas, kurio reikia norint užrašyti, pvz., grafikų pavadinimus.
  2. Klasės „character“ (tekstinės) reikšmės sukuriamos tekstą ar simbolius parašius dvigubuose ("...") ar viengubose ('...') „kompiuteristų“ kabutėse (atkreipkite dėmesį, kad tos kabutės yra tiesios ir jose esantis tekstas įprastai paryškinamas tam tikra spalva, šioje svetainėje ji yra žalia), o ne pagražintose „literatūrinėse“ kabutėse, pvz., „...“ arba ‘...’ (šio tipo kabutėse esantis tekstas nėra paryškintas klasei „character“ būdinga spalva, jis pilkas). Ženklų eilučių pavyzdžiai: "labas",'A4'.
  3. „R“ duomenų eilutės palaiko specialiuosius simbolius, kurie prasideda ženklu \, vadinamu „išeities simboliu“ (angl., escape character). Pvz., \n – nurodo, kad spausdinant tekstą šioje vietoje bus nauja eilutė, \t – tabuliacija (tam tikros rūšies tarpas), \" ir \' – nurodo, kad šioje vietoje bus kabutės (kabutėse), o ne ženklų eilutės pabaiga. Norėdami atspausdinti paprastą atgal pasvirusį brūkšnį, jį turime rašyti 2 kartus (\\). Vienose situacijose tai yra labai patogu, kitose – labai neįprasta ir apsunkina eilutės suprantamumą.
  4. Jei pradiniai duomenys yra tekstiniai, juos įprastai pasiversime į kategorinius duomenis naudodami funkciją factor() arba as.factor(). Kompiuterio atmintyje faktoriai užima mažiau vietos nei tekstas.
  5. „R“ duomenų statistiniuose aprašymuose trumpinama chr arba char.

Prieš atliekant statistinę analizę, tekstinių kintamųjų reikšmės verčiamos į kategorinių kintamųjų reikšmes.

Užduotis 4.17 Komanda writeLines() žmogui suprantama išraiška atspausdina ženklų eilutes. „RStudio“ konsolėje įvykdykite kiekvieną komandą ir stebėkite, koks atsakymas (gali būti ir klaida):

  1. writeLines("1 Abc")
  2. writeLines(„2 Abc“) # :(
  3. writeLines('3 Abc')
  4. writeLines(‘4 ABC’) # :(
  5. writeLines("5 A 'BC'")
  6. writeLines('6 A "BC"')
  7. writeLines("7 A \"BC\"") # \" kabutės kabutėse
  8. writeLines("8 A\tB\tC") # \t tabuliacija
  9. writeLines("9 A\nB\nC") # \n nauja eilutė
  10. writeLines("A\\B\\C") # \\ tiesiog atgal pasviręs brūkšnys
  11. str("ABC") # str() — objekto struktūra
Ar galite paaiškinti, kodėl gautas būtent toks rezultatas?

4.5.4 Faktoriai – kategoriniai kintamieji

Nominalieji duomenys

Faktorius (klasė „factor“) – tai „R“ duomenų tipas, skirtas kategoriniams duomenims: dmuomenims, turintiems iš anksto apibrėžtą galimų skirtingų reikšmių (kategorijų) skaičių. Pvz., kategorinis kintamasis (faktorius) „spalvos“ su galimomis reikšmėmis „geltona“, „žalia“ arba „raudona“.

  1. Faktoriai skirti saugoti kategorinių kintamųjų reikšmes.
  2. Faktoriai turi iš anksto apibrėžtą baigtinį galimų reikšmių (kategorijų) skaičių.
  3. Programoje „R“ kategorijos vadinamos „lygiais“ (angl. levels).
  4. Faktorius yra sudėtinis duomenų tipas: faktorių reikšmės kompiuterio atmintyje saugomos kaip sveikieji skaičiai (t. y., kategorijos kodai), o kategorijų pavadinimai – kaip tekstas. Tokiu būdu kategoriniai duomenys kompiuterio atmintyje užima mažiau vietos nei tekstas.
  5. Statistiniuose aprašymuose klasė „factor“ trumpinama fct, fctr arba tiesiog Factor.

Faktorius gali būti sukurtas naudojant funkciją factor(), o argumentas levels skirtas nurodyti pageidaujamą kategorijų eilės tvarką:

mano_kategorijos <- factor(c("A", "C", "C", "B", "A", "A"), levels = c("A", "B", "C"))
mano_kategorijos # Atspausdiname rezultatą
## [1] A C C B A A
## Levels: A B C

Tie patys duomenys, tik kita kategorijų eilės tvarka:

mano_kategorijos_2 <- factor(mano_kategorijos, levels = c("B", "A", "C"))
mano_kategorijos_2 # Atspausdiname rezultatą
## [1] A C C B A A
## Levels: B A C

Duomenys priklauso klasei „factor“:

class(mano_kategorijos)
## [1] "factor"

Skirtumas pasimato sudarant lenteles ir braižant grafikus:

# Stulpelinė diagrama
plot(mano_kategorijos)

# Stulpelinė diagrama
# (tiems patiems duomenims pakeista kategorijų eilės tvarka)
plot(mano_kategorijos_2)

(Prisiminkite, kokio tipo grafiką funkcija plot() nubraižė skaitiniams kintamiesiems. T. y., ar tokio paties?)

Bandant palyginti kelias faktoriaus reikšmes, „R“ pasakys, kad tokį veiksmą atlikti neprasminga (not meaningful for factors), nes kategoriniai kintamieji neturi natūralaus kategorijų eiliškumo:

# [1] pirmas elementas, t. y. raidė „A“
# [2] antrasis elementas, t. y. raidė „C“
mano_kategorijos[1] < mano_kategorijos[2]
## Warning in Ops.factor(mano_kategorijos[1], mano_kategorijos[2]): '<' not
## meaningful for factors
## [1] NA

Simbolis NA reiškia, kad atsakymas yra negalimas (angl., not available).

Ranginiai duomenys

Ranginiams duomenims įprastai naudojama klasė „ordered“. Ji sukuriama naudojant tą pačią funkciją factor() ir nurodant argumentą ordered = TRUE:

ranginis <- factor(mano_kategorijos, ordered = TRUE)
ranginis
## [1] A C C B A A
## Levels: A < B < C

Iš principo, tai tie patys faktoriai, tik papildomai kategorijos turi eilės tvarką, todėl galima palyginti, kuri reikšmė yra didesnė.

class(ranginis)
## [1] "ordered" "factor"

Ranginio kintamojo reikšmes galima palyginti, nes rangai turi eilės tvarką:

ranginis[1] > ranginis[2]
## [1] FALSE

Statistiniuose aprašymuose klasė „ordered“ trumpinama kaip ord arba Ord.factor.

Užduotis 4.18

  1. Atkartokite šiame skyriuje pateiktus pavyzdžius su faktoriais, tik kategorijų eilės tvarką išdėliokite nuo C iki A. Atvaizduokite grafiškai. Kas pasikeitė?
  2. Kintamasis mano_kategorijos buvo sukurtas šio skyriaus pavyzdžiuose. Įvykdykite funkciją unclass(mano_kategorijos). Kaip galėtumėte paaiškinti rezultatą? (Užrašę ?unclass gauname tokį paaiškinimą: „unclass returns (a copy of) its argument with its class attribute removed.“)
  3. Įvykdykite kodą šiame skyriuje sukurtiems kintamiesiems:
    1. str(ranginis)
    2. str(mano_kategorijos)

4.5.5 Data ir laikas

Data gali būti saugoma kaip klasės „Date“ objektas. Tokios klasės datas „R“ atspausdina, kaip įprastas datas, pvz., "2017-06-20", bet savo atmintyje saugo kaip dienų skaičių, praėjusį nuo 1970-01-01, pvz. 17337.

Yra keli datos ir laiko (angl. datetime) saugojimo standartai:

  1. POSIXct (POSIX calendar time) – sekundžių skaičius, praėjęs nuo 1970-01-01 pradžios. „R“ šitokius duomenis atspausdina žmonėms suprantamu būdu:
## [1] "2018-05-01 00:09:00 EEST"

Tačiau savo atmintyje saugo kitaip:

## [1] 1525122540
## attr(,"tzone")
## [1] ""
  1. POSIXlt (POSIX local time) – metai, mėnesiai, dienos ir kita kompiuterio atmintyje yra saugomi kaip sąrašo elementai. Atspausdinus, rezultatas atrodo taip pat, kaip ir ankstesnis:
## [1] "2018-05-01 00:09:00 EEST"

Tačiau struktūra, kuri saugoma kompiuterio atmintyje, labiau suprantama žmonėms (įtariu, kad suprantate bent pusę užkoduotų pavadinimų):

## $sec
## [1] 0
## 
## $min
## [1] 9
## 
## $hour
## [1] 0
## 
## $mday
## [1] 1
## 
## $mon
## [1] 4
## 
## $year
## [1] 118
## 
## $wday
## [1] 2
## 
## $yday
## [1] 120
## 
## $isdst
## [1] 1
## 
## $zone
## [1] "EEST"
## 
## $gmtoff
## [1] NA

Yra ir kitų darbui su laiku ir datomis skirtų formatų. Šis skyrelis buvo skirtas tik bendram suvokimui susidaryti.


Užduotis 4.19

  1. Įvykdykite komandas Sys.Date(), Sys.time() kelis kartus iš eilės. Kaip manote, ką jos parodo?
  2. Įvykdykite komandas unclass(Sys.Date()), unclass(Sys.time()). Ką rodo rezultatas?

4.6 Klausimai savikontrolei

Užduotis 4.20

  1. Kokie skliaustai (apvalieji, laužtiniai, riestiniai ar trikampiai) rašomi po „R“ funkcijų (komandų) pavadinimų?
  2. Kokiu simboliu žymimi „R“ kalbos komentarai?
  3. Kuo panašios ir kuo skiriasi šios „R“ programos duomenų struktūros: „R“ vektoriai, „R“ matricos, „R“ sąrašai (lists) ir duomenų lentelės (data.frames)? Lyginkite duomenų tipus, kurie gali būti saugomi šiose struktūrose, duomenų išdėstymo būdą bei kur šios struktūros gali būti panaudotos.
  4. Kaip apibūdintumėte, kas yra funkcijos argumentas?
  5. Kaip programoje „R“ užrašomos loginės reikšmės „tiesa“ ir „netiesa“?
  6. Kas yra „R“ konsolė? Ką ji daro?
  7. Ką reiškia užrašai 1e4 bei 9e-4?
  8. Atspausdinome vektorių (t. y., duomenų seką) su skaičiais, pvz., naudodami kodą 25:1e4. Ką reiškia „R“ komandų lango eilutės pradžioje laužtiniuose skliaustuose parašytas skaičius (pvz., [19], [55] arba analogiškas)?
  9. Kaip rekomenduojama rašyti „R“ objektų pavadinimus? Pateikite 2 tokių pavadinimų pavyzdžius.
  10. Kur – matricoje ar duomenų lentelėje – gali būti skirtingų tipų (pvz., ir skaičiai, ir faktoriai, ir tekstas) duomenys?
  11. Ar duomenų lentelėje visi stulpeliai būtinai privalo būti vienodo ilgio?
  12. Kokie „R“ operatoriai atlieka šias operacijas: objekto kūrimas (reikšmės priskyrimas)?
  13. Ką „R“ programos kode reiškia simbolis #? Iki kur jis galioja? Nuo kur nebegalioja?
  14. Kokie „R“ duomenų tipai yra svarbiausi šiam kursui? Žinokite jų pavadinimus ir lietuvių, ir anglų kalba.
  15. Kokios „R“ klasės tinkamos skaitiniams tolydiesiems ir kokios skaitiniams diskretiesiems duomenis?
  16. Kokios „R“ klasės tinkamos kategoriniams duomenims?

Klausimai ir komentarai