Stáhneme z internetu instalační programy pro R a také pro RStudio. Nainstalujeme program R a program RStudio. Při instalaci běžně souhlasíme s nabízenými volbami. Spouštíme RStudio, které si samo spustí program R. Připomeňme, že bychom mohli pracovat přímo s programem R, ale RStudio nám zvýší komfort při používání programu R.
Vektor – indexovaný souhrn prvků stejného atomického typu (funkce typeof() poskytuje pro všechny tyto prvky tentýž výsledek). Index prvku vektoru udává jeho pořadí. Indexy tvoří posloupnost přirozených čísel počínaje jedničkou. Vektor je základní datová jednotka, se kterou R pracuje. R nezná skaláry. Místo toho pracuje s jednosložkovými vektory.
Běžnou funkcí pro tvorbu vektoru je funkce c. Jako argumenty jí zadáme složky vektoru a její návratovou hodnotu přiřadíme proměnné ozanačující vytvořený vektor.
> x1<-c(1,2,5,8); x2<-c(x1,10,12)
> ls.str()
x1 : num [1:4] 1 2 5 8
x2 : num [1:6] 1 2 5 8 10 12
> x3<-c(5,"jan",8)
> str(x3)
chr [1:3] "5" "jan" "8"
Při tvorbě vektoru x3 jsme nedodrželi podmínku, že prvky vektoru musí být stejného atomického typu. Program R však vyřešil situaci za nás. Vytvořil vektor se složkami znakového typu.
Posloupnosti děláme pomocí operáturu dvojtečka, nebo funkcí seq.
• x<-from:to
• seq (from, to)
• seq (from, to, by= )
• seq (from, to, length.out = ) # určíme počet členů.
> x<-1:10
> x<-seq(1,10,2)
> x
[1] 1 3 5 7 9
> x<-seq(0,1,length.out = 11)
> x
[1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
Děláme-li, s proměnnými označujícími vektor, aritmetické operace, udělá je R se všemi složkami vektoru.Většina funkcí běžně dostupných v R je též vektorizovaná (log, sum, mean...). Dáme-li vektor jako argument vektorizované funkci, působí také na všechny složky vektoru. Vektorizace je jednou ze základních vlastnosti programu R.
> a<-c(1,3,5,7)
> b<-c(1,2,4,8)
> 5 * a # vynásobení každé složky vektoru a pěti – jde vlastně o recycling (viz
dále)
[1] 5 15 25 35
> c<-a+b # sečtení dvou vektorů po složkách
> d<-a/b # vydělení každé složky vektoru a odpovídající složkou vektoru b
> c
[1] 2 5 9 15
> d
[1] 1.000 1.500 1.250 0.875
> log10(a)
[1] 0.0000000 0.4771213 0.6989700 0.8450980
Použijeme funkci length
> a<-c(1,3,5,7)
> length(a)
[1] 4
Má-li proběhnout vektorizace mezi vektory o nestejné délkce, prodlouží se, a to opakováním složek počínaje první, kratší z nich na délku delšího a pak teprve probíhá operace zahrnující vektorizaci.
> u<-c(10,20,30, 40, 50)
> v<-c(1,2,3)
> u+v
[1] 11 22 33 41 52
Warning message:
In u + v : longer
object length is not a multiple of shorter object length
Vektor v byl recyklací prodloužen na vektor o složkách 1, 2, 3, 1, 2. Potom byly oba vektory u a v sečteny. Při recyklaci poskytuje RStudio standardně varovnou zprávu. Recyklací se však nenaruší hodnota (počet složek) kratšího vektoru.
> sum(4,5,6)
[1] 15
> x <-c(4,5,6)
> mean(x)
[1] 5
> sum(x)
[1] 15
Chybou by bylo, počítat průměr z více čísel, tak, že je uvedeme jako
argumenty. Např:
> mean(4,5,6)
[1] 4
nám vychází roven čtyřem, protože
funkce mean průměruje jen první argument. Tedy z našich tří čísel nutno vytvořit
vektor a ten průměrovat, viz výše, nebo
> mean(c(4,5,6))
[1] 5
Podobně jako průměr se chovají i funkce var (výběrový rozptyl) a
sd (výběrová směrodatná odchylka - druhá odmocnina z výběrového rozptylu)
> x <-c(1,2,3,4,5,6)
> var(x)
[1] 3.5
> sum((x-mean(x))^2)/(length(x)-1) # výpočet výběrového rozptylu z definičního vzorce
[1] 3.5
> sd(x)
[1] 1.870829
> sqrt(var(x)) # výpočet směrodatné odchylky z rozptylu.
[1] 1.870829