knitr::opts_chunk$set(
echo = TRUE,
message = FALSE,
warning = FALSE
)
V tomto cvičení budem pracovať s rôznymi typmi dát v jazyku R –
číselnými, logickými, textovými, vektormi a maticami.
Cieľom je pochopiť ich použitie a na konci vytvoriť jednoduchú vlastnú
inováciu.
# Priradenie hodnôt
a <- 12
b <- 2.8
# Základné operácie
sucet <- a + b
rozdiel <- a - b
nasobenie <- a * b
delenie <- a / b
mocnina <- a ^ 3
modulo <- a %% 4
# Zaokrúhľovanie
round_b <- round(b)
ceil_b <- ceiling(b)
floor_b <- floor(b)
a; b
## [1] 12
## [1] 2.8
sucet; rozdiel; nasobenie; delenie; mocnina; modulo
## [1] 14.8
## [1] 9.2
## [1] 33.6
## [1] 4.285714
## [1] 1728
## [1] 0
round_b; ceil_b; floor_b
## [1] 3
## [1] 3
## [1] 2
Vypočítaj hodnotu:
\[\frac{(18^2 + 5)}{9}\]
(18^2 + 5) / 9
## [1] 36.55556
first <- "Eliška"
last <- "Lenická"
# Spojenie textov
cele_meno <- paste(first, last)
cele_meno_bez_medzery <- paste0(first, last)
ovocie <- paste("hruška", "slivka", "marhuľa", sep = ", ")
first; last; cele_meno; cele_meno_bez_medzery; ovocie
## [1] "Eliška"
## [1] "Lenická"
## [1] "Eliška Lenická"
## [1] "EliškaLenická"
## [1] "hruška, slivka, marhuľa"
text <- "Učenie v R je zábavné!"
nchar(text)
## [1] 22
substr(text, 4, 10)
## [1] "nie v R"
p <- TRUE
q <- FALSE
!p # negácia
## [1] FALSE
p & q # AND
## [1] FALSE
p | q # OR
## [1] TRUE
xor(p, q)# exclusive OR
## [1] TRUE
2 < 10
## [1] TRUE
7 >= 10
## [1] FALSE
"apple" == "banana"
## [1] FALSE
"true" != "false"
## [1] TRUE
!FALSE
## [1] TRUE
vek <- 19
vek > 18 & vek < 30
## [1] TRUE
vek < 15 | vek > 25
## [1] FALSE
log_vec <- c(TRUE, TRUE, FALSE, TRUE, FALSE)
log_vec
## [1] TRUE TRUE FALSE TRUE FALSE
v1 <- c(1, 3, 5, 7)
v2 <- 2:8
v3 <- seq(0, 2, by = 0.5)
v4 <- rep(4, times = 6)
v5 <- runif(5)
v6 <- rnorm(5)
v1; v2; v3; v4; v5; v6
## [1] 1 3 5 7
## [1] 2 3 4 5 6 7 8
## [1] 0.0 0.5 1.0 1.5 2.0
## [1] 4 4 4 4 4 4
## [1] 0.2015948 0.6860989 0.8395280 0.3817302 0.1993725
## [1] -1.6092335 -1.4669875 0.3919024 -0.1367630 0.7730157
v <- c(1, 2, 3, 4, 5)
v + 2
## [1] 3 4 5 6 7
v * 3
## [1] 3 6 9 12 15
(v - 1) / 2
## [1] 0.0 0.5 1.0 1.5 2.0
exp(v)
## [1] 2.718282 7.389056 20.085537 54.598150 148.413159
sum(c(1,2,3), c(2,2,2))
## [1] 12
crossprod(c(2,3,4), c(1,1,1))
## [,1]
## [1,] 9
c(1,2,3) * c(4,5,6)
## [1] 4 10 18
x <- c(4, 9, 2, 15, 6, 10)
x[1]
## [1] 4
x[3:5]
## [1] 2 15 6
x[-2]
## [1] 4 2 15 6 10
x[x >= 6]
## [1] 9 15 6 10
which(x >= 6)
## [1] 2 4 5 6
y <- c(5, 8, NA, 12, NA, 7)
is.na(y)
## [1] FALSE FALSE TRUE FALSE TRUE FALSE
mean(y)
## [1] NA
mean(y, na.rm = TRUE)
## [1] 8
z <- c(9, 4, 11, 7, 2)
mean(z)
## [1] 6.6
sd(z)
## [1] 3.646917
max(z)
## [1] 11
summary(z)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 2.0 4.0 7.0 6.6 9.0 11.0
sort(z)
## [1] 2 4 7 9 11
sort(z, decreasing = TRUE)
## [1] 11 9 7 4 2
Vytvor vektor cisla s hodnotami od 5 do 25 a vypočítaj
priemer všetkých nepárnych čísel.
cisla <- 5:25
mean(cisla[cisla %% 2 != 0])
## [1] 15
M <- matrix(1:15, nrow = 3, ncol = 5)
M_byrow <- matrix(1:15, nrow = 3, byrow = TRUE)
M; M_byrow
## [,1] [,2] [,3] [,4] [,5]
## [1,] 1 4 7 10 13
## [2,] 2 5 8 11 14
## [3,] 3 6 9 12 15
## [,1] [,2] [,3] [,4] [,5]
## [1,] 1 2 3 4 5
## [2,] 6 7 8 9 10
## [3,] 11 12 13 14 15
dim(M)
## [1] 3 5
M[2, 3]
## [1] 8
M[, 4]
## [1] 10 11 12
M[1, ]
## [1] 1 4 7 10 13
M[1:2, 2:4]
## [,1] [,2] [,3]
## [1,] 4 7 10
## [2,] 5 8 11
A <- matrix(c(3, 2, 1, 5), nrow = 2)
B <- matrix(c(7, 6, 4, 2), nrow = 2)
A + B
## [,1] [,2]
## [1,] 10 5
## [2,] 8 7
A * B
## [,1] [,2]
## [1,] 21 4
## [2,] 12 10
A %*% B
## [,1] [,2]
## [1,] 27 14
## [2,] 44 18
t(A)
## [,1] [,2]
## [1,] 3 2
## [2,] 1 5
det(A)
## [1] 13
solve(A)
## [,1] [,2]
## [1,] 0.3846154 -0.07692308
## [2,] -0.1538462 0.23076923
C <- cbind(2:4, 5:7)
D <- rbind(3:5, 6:8)
C; D
## [,1] [,2]
## [1,] 2 5
## [2,] 3 6
## [3,] 4 7
## [,1] [,2] [,3]
## [1,] 3 4 5
## [2,] 6 7 8
M2 <- matrix(1:9, nrow = 3)
apply(M2, 1, sum)
## [1] 12 15 18
apply(M2, 2, mean)
## [1] 2 5 8
Vytvor maticu 5×5 s hodnotami 1..25 po stĺpcoch a vypočítaj riadkové súčty.
M3 <- matrix(1:25, nrow = 5, byrow = FALSE)
rowSums(M3)
## [1] 55 60 65 70 75
Ako vlastnú inováciu vytvorím jednoduchý koláčový graf s rozdelením času počas dňa.
cas <- c(8, 6, 4, 6)
aktivity <- c("Škola", "Spánok", "Voľný čas", "Štúdium")
pie(cas,
labels = aktivity,
col = c("lightblue", "pink", "lightgreen", "yellow"),
main = "Rozdelenie času počas dňa")
V tomto cvičení som si precvičila prácu so základnými typmi dát,
vektorovými a maticovými operáciami.
Ukázalo sa, že R Markdown je prehľadný nástroj na spájanie textu a
výsledkov kódu.
Ako novinku som vytvorila vlastný koláčový graf s rozdelením aktivít
počas dňa.