Vektory, matice a polia

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

Comments are closed.