Vektor ja maatriks

Vektor on sisuliselt lihtsaim mõistlik objekt R-is. Erandjuhul võime ette kujutada, et ka üksik arv või sümbol on vektor (millel on ainult üks element). Olgu meil kaks vektorit arvudega:

> kaalud=c(1.5,3.2,2.4,11.6)
> kaalud2=c(2.5,1.2,5.4,12.6)

Kuivõrd R-is toimivad funktsioonid tüüpiliselt elemendikaupa (s.o. nt liitmisel liidetakse kokku esimese vektori esimene element ja teise vektori esimene element, seejärel esimese vektori teine element ja teise vektori teine element), siis reeglina ei ole meil tehete jaoks vaja pöörduda otse vektorite mingi konkreetsete elementide poole. Ent vahel võib see vajadus siiski tekkida. Seda saab teha kandiliste sulgude abil. Näiteks on meil ehk soovliita kokku esimese vektori esimene ja teise vektori kolmas element.

> kaalud[1]+kaalud2[3]
[1] 6.9

Siin on oluline märkida, et muidugi saame vektoris välja valida ka mitu elementi korraga, või mõnd elementi koguni korduvalt.

> kaalud[c(1,3,3)]
[1] 1.5 2.4 2.4

Üks kaval viis on veel miinus märgi kasutamine, mis ütleb elemendid, mida me välja kutsuda ei soovi. Seega kõik peale esimese elemendi saame kätte

> kaalud[-1]
[1] 3.2 2.4 11.6

Jällegi võime välja kutsumata jätta ka mitu elementi.

Viimane oluline viis on tingimuslik väljakutse. Ehk soovime vektorist ainult neid elemente, mis rahuldavad teatavat tingimust. Sellisel juhul on väljakutse sisuliselt kaheosaline -- esmalt kontrollitakse mingit tingimust, mille tulemusena tekib vektor, mis koosneb väärtustest TRUE ja FALSE, ning seejärel kutsutakse välja kõik need elemendid, mis kohakuti väärtustega TRUE. Eelnevat on lihtne mõista järgnevate ridade näitel. Kuivõrd

> kaalud>3
[1] FALSE TRUE FALSE TRUE

siis

> kaalud[kaalud>3]
[1] 3.2 11.6

sest väärtus TRUE on just nimelt positsioonidel 2 ja 4. Praktikas võib tingimusi olla muidugi mitu, mida on siis võimalik omavahel kombineerida. Tingimusi saab seada sümbolitega <, >, <=, >=, == ja !=, mis on tähendustega vastavalt väiksem, suurem, väiksem või võrdne, suurem või võrdne, võrdne ja mitte võrdne. Tingimuste kombineerimiseks on levinuimad sümbolid & ja |, ehk ja ja või (kehtima peavad esimesel juhul mõlemad tingimused ja teisel juhul vähemalt üks).

Nii näiteks

> kaalud[(kaalud2>3)&(kaalud<3)]
[1] 2.4

Maatriks on oma olemuselt otsekui mitu sama pikkusega vektorit kõrvuti asetatud. Näiteks olgu meil esmalt vektor ja seejärel loome maatriksi

> jada=1:9
> mat=matrix(jada,nrow=3,byrow=T)

> mat

     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9

On selge, et maatriksist elementide valimine peab sisaldama juba kahte "aadressi" -- rea numbrit ja veeru numbrit. Tõepoolest

> mat[2,3]
[1] 6

ehk enne koma antakse rea number või numbrid ja pärast koma veeru number või numbrid. Üks oluline erisus siiski on -- kui me jätame tühjaks koha kas enne koma või peale koma, siis valitakse vastavalt kõik read vastavatest veergudest või kõik veerud vastavatest ridadest. Seega siis

> mat[,3]
[1] 3 6 9

Muidugi saame ka siin luua keerukaid valikutingimusi. Näiteks

> mat[2,(mat[1,]>1)&(mat[1,]<3)]
[1] 5

See on nii, sest me soovime valida elemente maatriksi teisest reast, kusjuures valitakse ainult nendest veergudest, kus esimese rea elemendid on suuremad kui üks ja väiksemad kui kolm. Esimeses reas on aga ainult teises veerus selline element ning seega valitakse antud juhul teise rea teine element.

Üks kasulik tingimus, mida veel vahel vaja minna võib on kujul

> mat[mat[,2] %in% 1:3,1]
[1] 1

Kuidas viimast näidet mõista? Kontrollitakse elementide kuulumist mingisse hulka ehk antud juhul vaadeldakse, millised teise veeru elementidest (2, 5, 8) kuuluvad ette hulka (1, 2, 3). Kuivõrd sinna hulka kuulub vaid esimene element, siis on selle kontrolli tulemuseks vektor (TRUE, FALSE, FALSE) ehk valitakse ainult teise rea elemente. Kuivõrd valitakse ainult esimesest veerust, siis ongi tulemus selline nagu eelnevalt nähtud.