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
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 (stringy) zapisujeme do úvodzoviek:
meno <- "Katarína"
priezvisko <- "Nováková"
cele_meno <- paste(meno, priezvisko)
cele_meno
## [1] "Katarína Nováková"
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"
Na ukážku využijeme funkcie, ktoré neboli v pôvodnom dokumente:
nchar() – zistí dĺžku textového reťazcasubstr() – vyberie podreťazectoupper() a tolower() – zmenia veľkosť
písmentext <- "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é"
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
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
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
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
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
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
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