v1 <- c(1, 3, 5, 7, 9) # vlastný zoznam nepárnych čísel
v2 <- 10:15 # postupnosť 10,11,12,13,14,15
v3 <- seq(from = 2, to = 3, by = 0.2) # postupnosť s krokom 0.2
v4 <- rep(7, times = 4) # 4 prvkový vektor rovnakých čísel 7
v5 <- runif(6) # 6 rovnomerne rozdelených premenných z intervalu [0,1]
v6 <- rnorm(6) # 6 normálne rozdelených premenných
v1; v2; v3; v4; v5; v6
## [1] 1 3 5 7 9
## [1] 10 11 12 13 14 15
## [1] 2.0 2.2 2.4 2.6 2.8 3.0
## [1] 7 7 7 7
## [1] 0.08817105 0.83418717 0.96097018 0.33994611 0.67083177 0.07206546
## [1] 0.2212013 2.4011057 0.5233864 -0.6725368 -1.5067329 1.2179899
v <- c(5, 10, 15, 20) # vlastný vektor
v - 3 # každý prvok vektora zmenšíme o 3
## [1] 2 7 12 17
v * 4 # každý prvok vektora prenásobíme 4
## [1] 20 40 60 80
(v - 2) / 2 # od každého prvku odčítame 2 a vydelíme 2
## [1] 1.5 4.0 6.5 9.0
sqrt(v) # odmocnina z každého prvku vektora
## [1] 2.236068 3.162278 3.872983 4.472136
sum(c(2,4,6), c(1,1,1)) # skalárny súčin - výsledok je skalár
## [1] 15
crossprod(c(2,4,6), c(1,1,1)) # skalárny súčin (výsledok matica 1x1)
## [,1]
## [1,] 12
c(2,4,6) * c(1,1,1) # Hadamardov súčin (prvok po prvku)
## [1] 2 4 6
length(c(10,20,30,40)) # dĺžka prvého vektora
## [1] 4
length(c(2,4,6,8)) # dĺžka druhého vektora
## [1] 4
c(10,20,30,40) - c(2,4,6,8) # odčítanie dvoch vektorov (rovnaký rozmer)
## [1] 8 16 24 32
c(10,20,30,40) * c(2,4,6,8) # násobenie prvok po prvku
## [1] 20 80 180 320
y <- c(4, 9, 15, 2, 25, 8, 11)
y[3] # tretí prvok vektora
## [1] 15
y[2:5] # prvky od 2. po 5.
## [1] 9 15 2 25
y[-c(1,7)] # všetky prvky okrem prvého a posledného
## [1] 9 15 2 25 8
y[y < 10] # výber všetkých prvkov menších ako 10
## [1] 4 9 2 8
which(y %% 2 == 1) # indexy prvkov, ktoré sú nepárne
## [1] 2 3 5 7
y <- c(2, NA, 7, 4, NA, 9)
is.na(y) # zistí, ktoré prvky sú NA
## [1] FALSE TRUE FALSE FALSE TRUE FALSE
sum(is.na(y)) # počet chýbajúcich hodnôt
## [1] 2
mean(y) # výsledok bude NA
## [1] NA
mean(y, na.rm = TRUE) # priemer po odstránení NA
## [1] 5.5
median(y, na.rm = TRUE) # medián po odstránení NA
## [1] 5.5
z <- c(14, 6, 9, 20, 3, 11)
mean(z) # priemerná hodnota
## [1] 10.5
sd(z) # štandardná odchýlka
## [1] 6.024948
min(z) # minimálna hodnota
## [1] 3
summary(z) # súhrn základných štatistík
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 3.00 6.75 10.00 10.50 13.25 20.00
sort(z) # rastúce usporiadanie
## [1] 3 6 9 11 14 20
sort(z, decreasing = TRUE) # klesajúce usporiadanie
## [1] 20 14 11 9 6 3
Vytvorte vektor s číslami 1..49 a náhodne vyberte 6 čísel ako tip do lota.
set.seed(42) # príkaz, ktorý nastaví "začiatočný bod" (seed) pre generátor náhodných čísel
lotto_numbers <- sample(1:49, 6) # rozpätie je 1 až 49 a chcem 6 čísel
lotto_numbers
## [1] 49 37 1 25 10 36
# Matice
## Vytvorenie matíc
# matica s číslami od 5 do 20, usporiadaná po stĺpcoch
m <- matrix(5:20, nrow = 4, ncol = 4)
m
## [,1] [,2] [,3] [,4]
## [1,] 5 9 13 17
## [2,] 6 10 14 18
## [3,] 7 11 15 19
## [4,] 8 12 16 20
# matica s číslami od 10 do 25, usporiadaná po riadkoch
m_byrow <- matrix(10:25, nrow = 4, byrow = TRUE)
m_byrow
## [,1] [,2] [,3] [,4]
## [1,] 10 11 12 13
## [2,] 14 15 16 17
## [3,] 18 19 20 21
## [4,] 22 23 24 25
# vytvorím vlastnú maticu 4x3
A <- matrix(1:12, nrow = 4, ncol = 3, byrow = TRUE)
dim(A) # zistí počet riadkov a stĺpcov
## [1] 4 3
A
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 4 5 6
## [3,] 7 8 9
## [4,] 10 11 12
A[2, 3] # prvok v 2. riadku a 3. stĺpci
## [1] 6
A[ , 1] # všetky prvky v 1. stĺpci
## [1] 1 4 7 10
A[4, ] # všetky prvky vo 4. riadku
## [1] 10 11 12
A[1:2, 2:3] # podmatica z riadkov 1 a 2 a stĺpcov 2 a 3
## [,1] [,2]
## [1,] 2 3
## [2,] 5 6
## Maticové operácie
# matica 3x3, ktorá má inverziu
A <- matrix(c(2, 5, 7,
6, 3, 4,
5, -2, -3), nrow = 3)
B <- matrix(c(1, 0, 2,
0, 1, 3,
4, 5, 6), nrow = 3)
A + B # sčítanie matíc
## [,1] [,2] [,3]
## [1,] 3 6 9
## [2,] 5 4 3
## [3,] 9 7 3
A - B # odčítanie matíc
## [,1] [,2] [,3]
## [1,] 1 6 1
## [2,] 5 2 -7
## [3,] 5 1 -9
A * B # Hadamardov súčin (po prvkoch)
## [,1] [,2] [,3]
## [1,] 2 0 20
## [2,] 0 3 -10
## [3,] 14 12 -18
A %*% B # maticové násobenie
## [,1] [,2] [,3]
## [1,] 12 21 68
## [2,] 1 -3 23
## [3,] 1 -5 30
t(A) # transpozícia matice
## [,1] [,2] [,3]
## [1,] 2 5 7
## [2,] 6 3 4
## [3,] 5 -2 -3
det(A) # determinant matice (nebude 0)
## [1] -1
solve(A) # inverzia matice
## [,1] [,2] [,3]
## [1,] 1 -38 27
## [2,] -1 41 -29
## [3,] 1 -34 24
# dva nové vektory
v1 <- 10:12
v2 <- 20:22
# spojenie po stĺpcoch (každý vektor ako stĺpec)
C <- cbind(v1, v2)
# spojenie po riadkoch (každý vektor ako riadok)
D <- rbind(v1, v2)
C
## v1 v2
## [1,] 10 20
## [2,] 11 21
## [3,] 12 22
D
## [,1] [,2] [,3]
## v1 10 11 12
## v2 20 21 22
# vlastná matica 4x3
M <- matrix(10:21, nrow = 4)
M
## [,1] [,2] [,3]
## [1,] 10 14 18
## [2,] 11 15 19
## [3,] 12 16 20
## [4,] 13 17 21
apply(M, 1, max) # maximum z každého riadku
## [1] 18 19 20 21
apply(M, 2, min) # minimum z každého stĺpca
## [1] 10 14 18
# matica 4x3: výsledky 4 študentov v 3 testoch
grades <- matrix(c(75, 82, 91,
60, 70, 65,
88, 95, 92,
50, 55, 70),
nrow = 4, byrow = TRUE)
grades
## [,1] [,2] [,3]
## [1,] 75 82 91
## [2,] 60 70 65
## [3,] 88 95 92
## [4,] 50 55 70
# priemerné skóre študentov (po riadkoch)
rowMeans(grades)
## [1] 82.66667 65.00000 91.66667 58.33333
# priemerné výsledky testov (po stĺpcoch)
colMeans(grades)
## [1] 68.25 75.50 79.50
# matica 10 hráčov × 5 hodov kockou
dice <- matrix(sample(1:6, 50, replace = TRUE), nrow = 10, byrow = TRUE)
dice
## [,1] [,2] [,3] [,4] [,5]
## [1,] 2 2 1 4 1
## [2,] 5 6 4 2 2
## [3,] 3 1 1 3 4
## [4,] 5 5 5 4 2
## [5,] 4 3 2 1 2
## [6,] 6 3 6 2 4
## [7,] 4 6 2 5 4
## [8,] 5 4 2 2 3
## [9,] 1 5 2 2 6
## [10,] 6 2 4 3 6
# skóre hráčov
scores <- rowSums(dice)
scores
## [1] 10 19 12 21 12 21 21 16 16 21
# víťaz (riadok s max skóre)
which.max(scores)
## [1] 4