Vektory

Generovanie vektorov

a1 <- c(3, 6, 9, 12)
a2 <- 10:15                 # postupnosť 10,11,12,13,14,15
a3 <- seq(from = 2, to = 5, by = 0.5)   # postupnosť s krokom 0.5
a4 <- rep(7, times = 6)     # opakovanie čísla 7 šesťkrát
a5 <- runif(6, min = -1, max = 1)  # rovnomerne rozdelené premenné v intervale [-1,1]
a6 <- rnorm(6, mean = 5, sd = 2)   # normálne rozdelené čísla so stredom 5
a1; a2; a3; a4; a5; a6
## [1]  3  6  9 12
## [1] 10 11 12 13 14 15
## [1] 2.0 2.5 3.0 3.5 4.0 4.5 5.0
## [1] 7 7 7 7 7 7
## [1]  0.2323170 -0.4939021  0.5464110 -0.4948637 -0.5530104  0.8466134
## [1] 6.813428 4.691182 4.827466 4.273460 4.731260 5.411561

Aritmetické operácie s vektormi

v <- c(2, 4, 6, 8)
v - 1            # zmenšíme každý prvok o 1
## [1] 1 3 5 7
v / 2            # polovica každej hodnoty
## [1] 1 2 3 4
(v^2) + 3        # každý prvok umocníme a pripočítame 3
## [1]  7 19 39 67
sqrt(v)          # odmocnina každého prvku
## [1] 1.414214 2.000000 2.449490 2.828427
crossprod(c(2,3,4), c(1,0,1))   # skalárny súčin
##      [,1]
## [1,]    6
c(2,3,4) * c(1,0,1)             # Hadamardov súčin
## [1] 2 0 4

Operácie s vektormi rovnakého rozmeru

b1 <- c(1,2,3,4,5)
b2 <- c(5,4,3,2,1)
b1 + b2
## [1] 6 6 6 6 6
b1 * b2
## [1] 5 8 9 8 5
b1 / b2
## [1] 0.2 0.5 1.0 2.0 5.0

Indexovanie a výber prvkov vektora

x <- c(10, 25, 5, 40, 18, 7)
x[3]           # tretí prvok
## [1] 5
x[2:5]         # druhý až piaty prvok
## [1] 25  5 40 18
x[-4]          # všetko okrem štvrtého prvku
## [1] 10 25  5 18  7
x[x <= 15]     # len hodnoty menšie alebo rovné 15
## [1] 10  5  7
which(x > 20)  # indexy prvkov väčších ako 20
## [1] 2 4

Práca s chýbajúcimi hodnotami

y <- c(2, 8, NA, 15, NA, 20)
is.na(y)
## [1] FALSE FALSE  TRUE FALSE  TRUE FALSE
sum(is.na(y))            # počet chýbajúcich hodnôt
## [1] 2
median(y, na.rm = TRUE)  # medián bez NA
## [1] 11.5

Základné štatistiky a zoradenie

z <- c(15, 22, 8, 19, 30, 5)
mean(z)
## [1] 16.5
var(z)                    # rozptyl
## [1] 85.1
range(z)                  # minimum a maximum
## [1]  5 30
summary(z)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    5.00    9.75   17.00   16.50   21.25   30.00
sort(z)                   # vzostupne
## [1]  5  8 15 19 22 30
order(z)                  # indexy pre usporiadanie
## [1] 6 3 1 4 2 5

Malé cvičenie

Vytvorte vektor nums s číslami od -10 do 10.Nájdite súčet kladných čísel a priemer záporných čísel.

nums <- -10:10
sum(nums[nums > 0])
## [1] 55
mean(nums[nums < 0])
## [1] -5.5

Matice

Vytvorenie matíc

M <- matrix(11:26, nrow = 4, ncol = 4)           # hodnoty po stĺpcoch
M_byrow <- matrix(11:26, nrow = 4, byrow = TRUE) # hodnoty po riadkoch
M; M_byrow
##      [,1] [,2] [,3] [,4]
## [1,]   11   15   19   23
## [2,]   12   16   20   24
## [3,]   13   17   21   25
## [4,]   14   18   22   26
##      [,1] [,2] [,3] [,4]
## [1,]   11   12   13   14
## [2,]   15   16   17   18
## [3,]   19   20   21   22
## [4,]   23   24   25   26

Rozmery a tvar matice

dim(M)
## [1] 4 4
nrow(M)
## [1] 4
ncol(M)
## [1] 4

Výber prvkov z matice

M[2, 3]     # prvok v 2. riadku, 3. stĺpci
## [1] 20
M[, 4]      # celý 4. stĺpec
## [1] 23 24 25 26
M[3, ]      # celý 3. riadok
## [1] 13 17 21 25
M[1:2, 2:4] # podmatica
##      [,1] [,2] [,3]
## [1,]   15   19   23
## [2,]   16   20   24

Maticové operácie

A <- matrix(c(2, 4, 1, 3), nrow = 2)
B <- matrix(c(5, 0, 7, 2), nrow = 2)

A + B
##      [,1] [,2]
## [1,]    7    8
## [2,]    4    5
A - B
##      [,1] [,2]
## [1,]   -3   -6
## [2,]    4    1
A * B        # Hadamardov súčin
##      [,1] [,2]
## [1,]   10    7
## [2,]    0    6
A %*% B      # maticové násobenie
##      [,1] [,2]
## [1,]   10   16
## [2,]   20   34
t(A)
##      [,1] [,2]
## [1,]    2    4
## [2,]    1    3
det(A)
## [1] 2
solve(A)     # inverzia
##      [,1] [,2]
## [1,]  1.5 -0.5
## [2,] -2.0  1.0

Spájanie vektorov do matíc

E <- cbind(10:12, 20:22)  # stĺpce
F <- rbind(10:12, 20:22)  # riadky
E; F
##      [,1] [,2]
## [1,]   10   20
## [2,]   11   21
## [3,]   12   22
##      [,1] [,2] [,3]
## [1,]   10   11   12
## [2,]   20   21   22

Výpočty po riadkoch a stĺpcoch

G <- matrix(1:12, nrow = 3, byrow = TRUE)
G
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
## [3,]    9   10   11   12
rowMeans(G)
## [1]  2.5  6.5 10.5
colSums(G)
## [1] 15 18 21 24
apply(G, 1, max)
## [1]  4  8 12
apply(G, 2, sd)
## [1] 4 4 4 4

Malé cvičenie

Vytvorte maticu M3 rozmeru 4×5 s hodnotami od 2 do 21 (po riadkoch). Vypočítajte súčet po riadkoch, najväčšiu hodnotu v každom stĺpci a súčin matíc M3T×M3.

M3 <- matrix(2:21, nrow = 4, byrow = TRUE)
rowSums(M3)
## [1] 20 45 70 95
apply(M3, 2, max)
## [1] 17 18 19 20 21
t(M3) %*% M3
##      [,1] [,2] [,3] [,4] [,5]
## [1,]  486  524  562  600  638
## [2,]  524  566  608  650  692
## [3,]  562  608  654  700  746
## [4,]  600  650  700  750  800
## [5,]  638  692  746  800  854

Malé cvičenie

Z matici M3 vyber podmaticu z riadkov 2–4 a stĺpcov 3–5. Vypočítaj determinant podmatice, ak je štvorcová.

subM <- M3[2:4, 3:5]
subM
##      [,1] [,2] [,3]
## [1,]    9   10   11
## [2,]   14   15   16
## [3,]   19   20   21
if (nrow(subM) == ncol(subM)) det(subM)
## [1] 0

```