Säännölliset sarjat

Sangen usein tarvitaan vektoreita, joiden arvot ovat tasavälisiä. Kokonaislukusarjan saa komennolla alku:loppu:

> 3:12
 [1]  3  4  5  6  7  8  9 10 11 12

Tällaista sarjaa tarvitaan, kun halutaan nähdä vain osa vektorin arvoista tai tallettaa vain osa toiseen vektoriin. Meillä ei tosin ole vielä pitkää vektoria, mutta esimerkki riittänee:

> vek[2:4]
[1] 2.00 2.22 0.90

Kaksoispiste (:) on itse asiassa lyhenne komennolle seq, jonka avulla voidaan tuottaa myös muita kuin perättäisten kokonaislukujen sekvenssejä. Komentoa voi kutsua monella tavalla:

> from:to
> seq(from, to)
> seq(from, to, by=)
> seq(from, to, length=)
> seq(along)

Parametrit from ja to voi ilmoittaa suoraan numeroina (sillä ne ovat kaksi ensimmäistä), mutta vaihtoehtoinen kolmas parametri vaatii nimen. Parametri by ilmoittaan lisäyksen (joka voi olla negatiivinen alenevissa sarjoissa) tai vaihtoehtoisesti length ilmoittaa muodostettavien alkioiden määrän. Lopulta parametri along kertoo, että muodostetaan jonkin toisen vektorin pituinen kokonaislukusekvenssi:

> 1:6
[1] 1 2 3 4 5 6
> seq(1,6)/5
[1] 0.2 0.4 0.6 0.8 1.0 1.2
> seq(0,4,by=0.6)
[1] 0.0 0.6 1.2 1.8 2.4 3.0 3.6
> seq(0,4,length=7)
[1] 0.0000000 0.6666667 1.3333333 2.0000000 2.6666667 3.3333333 4.0000000
> seq(along=vek)  ## Tässä luvattu oikotie
[1] 1 2 3 4 5

Toinen hyödyllinen funktio säännöllisten sarjojen muodostamiseksi on rep, joka toistaa samaa arvoa. Saattaa kuulostaa turhalta, mutta on erittäin hyödyllistä esimerkiksi faktorien muodostamisessa. Yksinkertaisimmassa muodossaan funktiota kutsutaan:

> c(rep("contr",3), rep("treat",3))
[1] "contr" "contr" "contr" "treat" "treat" "treat"


Jari Oksanen 2003-01-21