Vektory
Jedná sa o usporiadanú množinu hodnôt. Pri vytvorení funkciou “c” im stanovujeme prvky a dĺžku, R CRAN si už sám určí dátový typ. Písmeno “c” tejto funkcie je odvodené od latinského slova concatenate, čo znamená “spojiť dokopy do reťaze”. Prvky vektoru môžeme sprístupňovať pomocou indexu a všetky prvky sú rovnakého dátového typu.
Príklady:
Vytvoríme si vektor s názvom “a” a priradíme mu hodnoty: 11, 12, 13, 14, 15, 16.
a <- c(11, 12, 13, 14, 15, 16) a #výpis vektora [1] 11 12 13 14 15 16 a[2] #výpis prvku vektora na indexe 2 [1] 12
Vytvoríme si vektor b, ktorý obsahuje hodnoty od 3 do 11
b <- 3:11 b #výpis vektora [1] 3 4 5 6 7 8 9 10 11 b[2:4] #výpis podvektora z vektoru b [1] 4 5 6 b < 5 #výpis prvkov, ktoré sú menšie ako 5 [1] TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE b[b >= 9] #výpis prvkov, ktoré sú väčšie alebo rovné ako 9 [1] 9 10 11
Treba s však dávať pozor pri vytváraní vektorov, ktoré majú prvky rôzneho dátového typu. V nasledovnom prípade máme vektor s prvkami troch rôznych typov, no R prekonvertuje tieto prvky na jeden rovnaký typ.
Máme prvky typu numeric, boolean, string, R nám ich všetky prekonvertuje na prvky typu string.
c(111, TRUE, "slovo") c # výpis vektora [1] "111" "TRUE" "slovo"
Matice
Matice sú dvojrozmerné vektory. Pri deklarovaní možno určiť rozmery matice niekoľkými spôsobmi popísanými nižšie.
Naplníme maticu s hodnotami počet = 9, stredná hodnota: 100, smerodajná odchýlka: 50
rnorm parametre: (počet, stredná hodnota, smerodajná odchýlka)
mat_a <- matrix(rnorm(9, 100, 50), nrow = 3)
Zaokrúhlime hodnoty v matici na jedno desatinné miesto.
for(i in 1:length(mat_a)) mat_a[i] <- round(mat_a[i], 1) mat_a
[,1] | [,2] | [,3] | |
[1,] | 117.9 | 108.4 | 120.2 |
[2,] | 154.8 | 83.3 | 75.7 |
[3,] | 192.1 | 79.2 | 81.9 |
Načítanie hodnôt matice
mat_b <- matrix(c(2, 3, -2, 1, 2, 2, 1, 3, 2), 3, 3)
Transponovaná matica
mat_t <- t(mat_b)
Inverzná matica pomocou funkcie solve()
mat_inv <- solve(mat_b)
Inverzná matica pomocou funkcie ginv()
library(MASS) mat_inv <- ginv(mat_b)
[,1] | [,2] | [,3] | |
[1,] | 0.333 | 0 | -0.167 |
[2,] | 2.000 | -1 | 0.500 |
[3,] | -1.667 | 1 | -0.167 |
Overenie správnosti výpočtu inverznej matice
mat_jedn <- solve(mat_inv) %*% mat_inv for(i in 1:length(mat_jedn)) mat_jedn[i] <- round(mat_jedn[i], 1) mat_jedn
[,1] | [,2] | [,3] | |
[1,] | 1 | 0 | 0 |
[2,] | 0 | 1 | 0 |
[3,] | 0 | 0 | 1 |
Zaokrúhľovanie hodnôt matice
for(i in 1:length(mat_inv)) mat_inv[i] <- round(mat_inv[i], 3) #zaokrúhlenie na 3 desatinné miesta
Výpočet determinantu matice
det_mat <- det(mat_b)
Sčítanie dvoch matíc
sucet <- mat_b + mat_b
Násobenie dvoch matíc
sucin <- mat_b %*% mat_b
Násobenie matíc konštantou
sucin_konst <- mat_b * (-1) #konštanta = -1
Počet riadkov a stĺpcov matice
dim(mat_b)
Počet riadkov matice
nrow(mat_b)
Počet stĺpcov matice
ncol(mat_b)
Priemerné hodnoty stĺpcov
colMeans(mat_b)
Priemerné hodnoty riadkov
rowMeans(mat_b)
Spájanie matíc
spojene <- cbind(mat_b, mat_b)
[,1] | [,2] | [,3] | [,4] | [,5] | [,6] | |
[1,] | 2 | 1 | 1 | 2 | 1 | 1 |
[2,] | 3 | 2 | 3 | 3 | 2 | 3 |
[3,] | -2 | 2 | -2 | 2 | -2 | 2 |
Polia
Polia sú v podstate niekoľkorozmerné vektory, pričom vyššie uvedené matice sú dvojrozmerné polia. Pre vytvorenie poľa použijeme funkciu array, ktorej zadáme ako parameter vektor hodnôt a vektor s rozmerom.
Ak chceme, môžeme si každý rozmer nejak pomenovať.
troj_rozmerne_pole <- array( 1:24, #hodnoty od 1 po 24 dim = c(4, 3, 2), # rozmery poľa dimnames = list( #názvy dimenzií c("one", "two", "three", "four"), c("ein", "zwei", "drei"), c("prvá", "druhá") ) )
Vektor troj_rozmerne_pole po výpise nasledovne:
, , prvá
ein zwei drei
one 1 5 9
two 2 6 10
three 3 7 11
four 4 8 12
, , druhá
ein zwei drei
one 13 17 21
two 14 18 22
three 15 19 23
four 16 20 24
Zdroje:
Cotton, R.: Learning R. USA: O’Really Media, 2013. ISBN-13: 978-1449357108