Úvod

Logické hodnoty a operácie

R dokáže pracovať aj s logickými hodnotami TRUE a FALSE.

p <- TRUE
q <- FALSE
p & q
## [1] FALSE
p | q
## [1] TRUE
!p
## [1] FALSE

Malé cvičenie

Skúste vytvoriť dve logické podmienky, ktoré porovnávajú čísla a vyhodnoťte ich pomocou & a |.

m <- (10 > 3)
n <- (5 == 7)
m & n
## [1] FALSE
m | n
## [1] TRUE

Textové hodnoty a reťazce

Textové hodnoty (stringy) zapisujeme do úvodzoviek:

meno <- "Katarína"
priezvisko <- "Nováková"
cele_meno <- paste(meno, priezvisko)
cele_meno
## [1] "Katarína Nováková"

Malé cvičenie

Vytvorte dve textové premenné podľa seba (napr. meno mesta a štátu) a spojte ich do jedného reťazca.

mesto <- "Bratislava"
stat <- "Slovensko"
paste(mesto, "je hlavné mesto", stat)
## [1] "Bratislava je hlavné mesto Slovensko"

Môj návrh použitia novinky

Na ukážku využijeme funkcie, ktoré neboli v pôvodnom dokumente:

text <- "Programovanie v R je zaujímavé"
nchar(text) # počet znakov
## [1] 30
substr(text, 1, 12) # prvých 12 znakov
## [1] "Programovani"
toupper(text) # veľké písmená
## [1] "PROGRAMOVANIE V R JE ZAUJÍMAVÉ"
tolower(text) # malé písmená
## [1] "programovanie v r je zaujímavé"

Matice

Vytvorenie matíc

m <- matrix(1:12, nrow = 3, ncol = 4)            # hodnoty sú zadavane po stlpcoch
m_byrow <- matrix(1:12, nrow = 3, byrow = TRUE)  # hodnoty su zadavane po riadkoch
m; m_byrow
##      [,1] [,2] [,3] [,4]
## [1,]    1    4    7   10
## [2,]    2    5    8   11
## [3,]    3    6    9   12
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
## [3,]    9   10   11   12

Rozmery matice

dim(m)                   # (rows, cols)
## [1] 3 4
m
##      [,1] [,2] [,3] [,4]
## [1,]    1    4    7   10
## [2,]    2    5    8   11
## [3,]    3    6    9   12

Adresovanie prvkov matice

m[1, 2]      # riadok 1, stlpec 2
## [1] 4
m[ , 3]      # vsetky prvky v tretom stlpci - vysledok matica 3x1
## [1] 7 8 9
m[2, ]       # vsetky prvky v druhom riadku - vysledok matica 1*3
## [1]  2  5  8 11
m[1:2, 2:3]  # podmatica tvorena riadkami 1, 2 a stlpcami 2, 3
##      [,1] [,2]
## [1,]    4    7
## [2,]    5    8

Maticové operácie

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

A + B        # scitanie matic
##      [,1] [,2]
## [1,]    6   10
## [2,]    8   12
A * B        # Hadamard product - nasobenie po zodpovedajucich prvkoch
##      [,1] [,2]
## [1,]    5   21
## [2,]   12   32
A %*% B      # nasobenie matic
##      [,1] [,2]
## [1,]   23   31
## [2,]   34   46
t(A)         # transpozicia matice A - vymena riadkov a stlpcov
##      [,1] [,2]
## [1,]    1    2
## [2,]    3    4
det(A)       # determinant matice
## [1] -2
solve(A)     # inverzia matice (ak je matica regularna - teda inverzia sa da spocitat)
##      [,1] [,2]
## [1,]   -2  1.5
## [2,]    1 -0.5

Zlučovanie vektorov do matíc

C <- cbind(1:3, 4:6)   #  - po stlpcoch 
D <- rbind(1:3, 4:6)   #  - po riadkoch 
C; D
##      [,1] [,2]
## [1,]    1    4
## [2,]    2    5
## [3,]    3    6
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    4    5    6

Vypočítanie zvolenej štatistiky po riadkoch (stĺpcoch) matice

M <- matrix(1:9, nrow = 3)
M
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9
apply(M, 1, sum)   # suma po riadkoch
## [1] 12 15 18
apply(M, 2, mean)  # priemery po stĺpcoch
## [1] 2 5 8

Malé cvičenie

Vytvorte maticu 5x5 s hodnotami po riadkoch 1..25, vypočítajte stĺpcové sumy a súčin matíc \(M^t M\).

M2 <- matrix(1:25, nrow = 5, byrow = TRUE)
colSums(M2)
## [1] 55 60 65 70 75
t(M2) %*% M2
##      [,1] [,2] [,3] [,4] [,5]
## [1,]  855  910  965 1020 1075
## [2,]  910  970 1030 1090 1150
## [3,]  965 1030 1095 1160 1225
## [4,] 1020 1090 1160 1230 1300
## [5,] 1075 1150 1225 1300 1375