Vektory

Vytvorenie a indexovanie

v <- c(10, 20, 30, 40, 50)   # vytvorenie
v[1]; v[2:4]; v[-1]          # indexy a rezanie
## [1] 10
## [1] 20 30 40
## [1] 20 30 40 50
v[v > 25]                    # logický filter
## [1] 30 40 50

Operácie a NA

a <- c(1, 2, 3)
b <- c(10, 20, 30)
a + b; a * b; a + 1
## [1] 11 22 33
## [1] 10 40 90
## [1] 2 3 4
x <- c(2, 4, NA, 8)
mean(x, na.rm = TRUE); sum(x, na.rm = TRUE) #na.rm = TRUE odignoruje "NA" hodnoty
## [1] 4.666667
## [1] 14

Matice

Vytvorenie a dimenzie

m <- matrix(1:12, nrow = 3, ncol = 4)  # po stĺpcoch
m
##      [,1] [,2] [,3] [,4]
## [1,]    1    4    7   10
## [2,]    2    5    8   11
## [3,]    3    6    9   12
dim(m); nrow(m); ncol(m)
## [1] 3 4
## [1] 3
## [1] 4

Mená a indexovanie

rownames(m) <- paste0("R", 1:3)
colnames(m) <- paste0("C", 1:4)
m
##    C1 C2 C3 C4
## R1  1  4  7 10
## R2  2  5  8 11
## R3  3  6  9 12
m[1, 2]; m[ ,2]; m[1:2, 3:4]
## [1] 4
## R1 R2 R3 
##  4  5  6
##    C3 C4
## R1  7 10
## R2  8 11

Základné výpočty

rowMeans(m); colMeans(m)
##  R1  R2  R3 
## 5.5 6.5 7.5
## C1 C2 C3 C4 
##  2  5  8 11
A <- matrix(c(1,2,3,4), nrow = 2, byrow = TRUE)
B <- matrix(c(5,6,7,8), nrow = 2, byrow = TRUE)
A
##      [,1] [,2]
## [1,]    1    2
## [2,]    3    4
B
##      [,1] [,2]
## [1,]    5    6
## [2,]    7    8
A * B; A %*% B; t(A)
##      [,1] [,2]
## [1,]    5   12
## [2,]   21   32
##      [,1] [,2]
## [1,]   19   22
## [2,]   43   50
##      [,1] [,2]
## [1,]    1    3
## [2,]    2    4

Malé cvičenie - Vektory

Vytvor vektor tržieb za Po–Ne a zisti: súčet, priemer, najlepší deň, dni pod priemerom.

trzby <- c(180, 220, 150, 260, 310, 400, 190)
dni <- c("Po","Ut","St","Št","Pi","So","Ne")
names(trzby) <- dni

sum(trzby); mean(trzby)
## [1] 1710
## [1] 244.2857
names(which.max(trzby))
## [1] "So"
names(trzby[trzby < mean(trzby)])
## [1] "Po" "Ut" "St" "Ne"

Malé cvičenie – Matice

Máš maticu známok (1=výborný, 5=nedostatočný) pre 3 testy a 4 študentov.
Zisti priemer za študenta, priemer za test a ktorý test vyšiel najlepšie.

znamky <- matrix(sample(1:5, size = 18, replace = TRUE), nrow = 6, ncol = 3, byrow = TRUE)
rownames(znamky) <- paste("Študent", 1:6)
colnames(znamky) <- paste0("Test", 1:3)
znamky
##           Test1 Test2 Test3
## Študent 1     3     1     4
## Študent 2     5     1     4
## Študent 3     2     2     3
## Študent 4     5     1     2
## Študent 5     5     5     2
## Študent 6     3     4     2
rowMeans(znamky)              # priemer študenta
## Študent 1 Študent 2 Študent 3 Študent 4 Študent 5 Študent 6 
##  2.666667  3.333333  2.333333  2.666667  4.000000  3.000000
colMeans(znamky)              # priemer testu
##    Test1    Test2    Test3 
## 3.833333 2.333333 2.833333
names(which.min(colMeans(znamky)))  # nájde najlepší test (najnižší priemer)
## [1] "Test2"
names(which.max(colMeans(znamky)))  # nájde najhorší test (najvyšší priemer)
## [1] "Test1"