Globálne nastavenie Chunkov

knitr::opts_chunk$set(
  echo = TRUE,
  message = FALSE,
  warning = FALSE
)

Úvod k základným operáciám v R

V tomto cvičení budem demonštrovať základné operácie s číslami, textami, logickými hodnotami, vektormi a maticami.
Cieľom je pochopiť, ako sa tieto dátové typy v jazyku R používajú, a na konci si ukážem aj svoju vlastnú „novinku“.


Škálary (jednočíselné hodnoty)

Numerické škálary

# Priradenie čísel do premenných
x <- 10
y <- 4.5

# Aritmetické operácie
sucet <- x + y
rozdiel <- x - y
nasobenie <- x * y
delenie <- x / y
mocnina <- x ^ 2
zvysok <- x %% 3

# Zaokrúhľovanie
round_y <- round(y)
ceil_y <- ceiling(y)
floor_y <- floor(y)

x; y
## [1] 10
## [1] 4.5
sucet; rozdiel; nasobenie; delenie; mocnina; zvysok
## [1] 14.5
## [1] 5.5
## [1] 45
## [1] 2.222222
## [1] 100
## [1] 1
round_y; ceil_y; floor_y
## [1] 4
## [1] 5
## [1] 4

Malé cvičenie 1

Vypočítaj hodnotu výrazu:
\[\frac{(20^2 - 6)}{8}\]

(20^2 - 6) / 8
## [1] 49.25

Textové premenné

Vytváranie a práca s textom

first <- "Vanessa"
last  <- "Vargová"

# Spojenie textov
full <- paste(first, last)
full_nospace <- paste0(first, last)
ovocie <- paste("jablko", "banán", "pomaranč", sep = ", ")

first; last; full; full_nospace; ovocie
## [1] "Vanessa"
## [1] "Vargová"
## [1] "Vanessa Vargová"
## [1] "VanessaVargová"
## [1] "jablko, banán, pomaranč"

Dĺžka textu a podreťazec

text <- "R je super jazyk!"
nchar(text)             # počet znakov
## [1] 17
substr(text, 1, 7)      # podreťazec od 1. po 7. znak
## [1] "R je su"

Logické (boolovské) hodnoty a premenné

Základy

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

Porovnávanie hodnôt

5 < 10
## [1] TRUE
7 >= 8
## [1] FALSE
"cat" == "dog"
## [1] FALSE
"vanessa" != "vargova"
## [1] TRUE
!TRUE
## [1] FALSE

Logické operácie s číslami

cislo <- 15
cislo > 10 & cislo < 20
## [1] TRUE
cislo < 0 | cislo > 30
## [1] FALSE

Logické vektory

log_vec <- c(TRUE, FALSE, TRUE, TRUE)
log_vec
## [1]  TRUE FALSE  TRUE  TRUE

Numerické vektory

Generovanie vektorov

v1 <- c(5, 10, 15, 20)
v2 <- 1:6
v3 <- seq(from = 0, to = 2, by = 0.4)
v4 <- rep(2, times = 5)
v5 <- runif(5)
v6 <- rnorm(5)

v1; v2; v3; v4; v5; v6
## [1]  5 10 15 20
## [1] 1 2 3 4 5 6
## [1] 0.0 0.4 0.8 1.2 1.6 2.0
## [1] 2 2 2 2 2
## [1] 0.65968699 0.48705756 0.08800322 0.72658836 0.52351541
## [1]  1.1751585  1.1611343 -0.4558581 -0.5194966  1.1891282

Aritmetické operácie s vektormi

v <- c(2, 4, 6, 8)
v + 5
## [1]  7  9 11 13
v * 3
## [1]  6 12 18 24
(v + 1) / 2
## [1] 1.5 2.5 3.5 4.5
exp(v)
## [1]    7.389056   54.598150  403.428793 2980.957987
sum(c(1,2,3), c(4,5,6))
## [1] 21
crossprod(c(1,2,3), c(4,5,6))
##      [,1]
## [1,]   32
c(1,2,3) * c(4,5,6)
## [1]  4 10 18

Indexovanie

x <- c(3, 7, 2, 9, 12, 5)
x[1]
## [1] 3
x[2:4]
## [1] 7 2 9
x[-1]
## [1]  7  2  9 12  5
x[x > 6]
## [1]  7  9 12
which(x > 6)
## [1] 2 4 5

Práca s chýbajúcimi hodnotami

y <- c(1, NA, 4, NA, 9)
is.na(y)
## [1] FALSE  TRUE FALSE  TRUE FALSE
mean(y)
## [1] NA
mean(y, na.rm = TRUE)
## [1] 4.666667

Štatistiky a usporiadanie

z <- c(12, 8, 15, 6, 3)
mean(z)
## [1] 8.8
sd(z)
## [1] 4.764452
max(z)
## [1] 15
summary(z)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     3.0     6.0     8.0     8.8    12.0    15.0
sort(z)
## [1]  3  6  8 12 15
sort(z, decreasing = TRUE)
## [1] 15 12  8  6  3

Malé cvičenie 2

Vytvor vektor moje_body s číslami 1 až 10 a spočítaj súčet všetkých čísel väčších ako 5.

moje_body <- 1:10
sum(moje_body[moje_body > 5])
## [1] 40

Matice

Vytvorenie matíc

M <- matrix(1:12, nrow = 3, ncol = 4)
M_byrow <- matrix(1:12, nrow = 3, byrow = TRUE)
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 a indexovanie

dim(M)
## [1] 3 4
M[1, 2]
## [1] 4
M[, 3]
## [1] 7 8 9
M[2, ]
## [1]  2  5  8 11
M[1:2, 2:3]
##      [,1] [,2]
## [1,]    4    7
## [2,]    5    8

Operácie s maticami

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

A + B
##      [,1] [,2]
## [1,]    7    8
## [2,]   10   11
A * B
##      [,1] [,2]
## [1,]   10    7
## [2,]   24   24
A %*% B
##      [,1] [,2]
## [1,]   16   22
## [2,]   38   52
t(A)
##      [,1] [,2]
## [1,]    2    4
## [2,]    1    3
det(A)
## [1] 2
solve(A)
##      [,1] [,2]
## [1,]  1.5 -0.5
## [2,] -2.0  1.0

Zlučovanie vektorov do matice

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

Výpočty po riadkoch a stĺpcoch

M2 <- matrix(1:9, nrow = 3)
apply(M2, 1, sum)
## [1] 12 15 18
apply(M2, 2, mean)
## [1] 2 5 8

Malé cvičenie 3

Vytvor maticu 4x4 s hodnotami 1..16 po riadkoch, spočítaj stĺpcové sumy a vypočítaj súčin matíc \(M^t M\).

M3 <- matrix(1:16, nrow = 4, byrow = TRUE)
colSums(M3)
## [1] 28 32 36 40
t(M3) %*% M3
##      [,1] [,2] [,3] [,4]
## [1,]  276  304  332  360
## [2,]  304  336  368  400
## [3,]  332  368  404  440
## [4,]  360  400  440  480

Môj návrh

Vytvorím jednoduchý graf, ktorý nebol v pôvodnom dokumente.
Ukážem stĺpcový graf z mojich výsledkov.

body <- c(88, 75, 95, 100)
predmety <- c("Matematika", "Štatistika", "Ekonómia", "R Markdown")

barplot(body,
        names.arg = predmety,
        col = "lightblue",
        main = "Moje body z predmetov",
        ylab = "Body")


Záver

V tomto cvičení som si precvičila prácu s rôznymi dátovými typmi v R – číselnými, textovými aj logickými.
Vyskúšala som aj prácu s vektormi a maticami, výpočty a operácie nad nimi.
Ako novinku som pridala jednoduchý graf, ktorým som si overila, že viem kombinovať kód a vizualizáciu.

Na dnes je to odo mňa všetko, teším sa na ďalšie zadanie.