Globálne nastavenie Chunkov

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

Skaláre (jednočíselné hodnoty)

Numerické skaláre

# Priradenie konštanty do premennej
a <- 12
b <- 3

# Arithmetic
sum_ab      <- a + b     
diff_ab     <- a - b        
prod_ab     <- a * b       
quot_ab     <- a / b        
power_ab    <- a ^ b     
mod_ab      <- a %% 3      


# Rounding
round_b   <- round(b)      
ceil_b    <- ceiling(b)     
floor_b   <- floor(b)      

a; b
## [1] 12
## [1] 3
sum_ab; diff_ab; prod_ab; quot_ab; power_ab; mod_ab; 
## [1] 15
## [1] 9
## [1] 36
## [1] 4
## [1] 1728
## [1] 0
round_b; ceil_b; floor_b
## [1] 3
## [1] 3
## [1] 3

Malé cvičenie

Vypočítajte:

\[\frac{(10^2+4-2)}{7}\]

(10^2+4-2) / 7
## [1] 14.57143

\[\cos(((15 - 7) * \pi / 180)^3) * (3 + 7 * (12 - 2))\]

cos(((15 - 7) * pi / 180)^3) * (3 + 7 * (12 - 2))
## [1] 72.99973

Poznámka:

Pri výpočte funkcie cos() som najprv dostával zvláštny výsledok, pretože R počíta funkcie v radiánoch, nie v stupňoch.

Keďže som tomu úplne nerozumel, použil som ChatGPT na vysvetlenie rozdielu medzi radiánmi a stupňami. Na základe toho som upravil výraz pomocou prevodu:

stupne * pi / 180

Tak som získal správny výsledok.

Text

Vytváranie textovými premennými a práca s nimi

first <- "Atamas"                     
last  <- "Ivan"                         
full  <- paste(first, last)              
university <- "Univerzita Komenského"
year  <- 2026
full_nospace <- paste0(first, last)     
my_info <- paste(full_nospace, "-", university, "-","rok:", year)
first; last; full; full_nospace;my_info
## [1] "Atamas"
## [1] "Ivan"
## [1] "Atamas Ivan"
## [1] "AtamasIvan"
## [1] "AtamasIvan - Univerzita Komenského - rok: 2026"

Dĺžka textového reťazca, podreťazec

x <- "Univerzita Komenskeho"
nchar(x)                 
## [1] 21
substr(x, 1, 10)          
## [1] "Univerzita"
substr(x, 3, 12)
## [1] "iverzita K"

Logické (boolovské) hodnoty a premenné

Základy

a <- 100
b <- 20
p <- a > 77
q <- b < 25
!p                 
## [1] FALSE
p & q              
## [1] TRUE
p | q              
## [1] TRUE
xor(p, q)       
## [1] FALSE

Logický výsledok porovnávania

8 > 2
## [1] TRUE
15 <= 7
## [1] FALSE
"student" == "student"
## [1] TRUE
"student" != "student"   
## [1] FALSE
!FALSE
## [1] TRUE

Zložitejšie logické operácie

x <- 20
x > 10 & x < 40      
## [1] TRUE
x < 12 | x > 30     
## [1] FALSE

Zlučovanie viacerých log. premenných do vektora

vals <- c(TRUE, FALSE, TRUE, FALSE)  

Numerické vektory

Generovanie vektorov

v1 <- c(5, 10, 15, 20)
v2 <- 2:7
v3 <- seq(from = 2, to = 25, by = 3)
v4 <- rep(7, times = 4)
v5 <- runif(5, min = 0, max = 10)
v6 <- rnorm(5, mean = 50, sd = 5)

v1; v2; v3; v4; v5
## [1]  5 10 15 20
## [1] 2 3 4 5 6 7
## [1]  2  5  8 11 14 17 20 23
## [1] 7 7 7 7
## [1] 0.1238557 6.3342759 2.9561115 6.8474206 3.6138279

Aritmetické operácie s vektormi

v <- c(1, 2, 3, 4)
v + 5          
## [1] 6 7 8 9
v * 7            
## [1]  7 14 21 28
(v - 2) / 2
## [1] -0.5  0.0  0.5  1.0
exp(v)    
## [1]  2.718282  7.389056 20.085537 54.598150
sum(v)
## [1] 10
mean(v)
## [1] 2.5
sum(c(1,2,3) * c(1,1,1))         
## [1] 6
crossprod(c(1,2,3),c(1,1,1))   
##      [,1]
## [1,]    6
c(1,2,3)*c(1,1,1)             
## [1] 1 2 3

Matematické operácie s 2 vektormi rovnakého rozmeru

v7 <- c(1,2,3,5,7,10,12)
length(v7)          
## [1] 7
c(1,2,3,5,7,10,12) + v7     
## [1]  2  4  6 10 14 20 24

Indexovanie a výber niektorych prvkov vektora

x <- c(7, 4, 15, 23, 6, 12, 3)
x[1]          
## [1] 7
x[2:7]        
## [1]  4 15 23  6 12  3
x[-2]        
## [1]  7 15 23  6 12  3
x[x > 10]     
## [1] 15 23 12
which(x %% 2 == 0)  
## [1] 2 5 6

Práca s chýbajúcimi hodnotami

y <- c(10, 25, NA, 5, NA, 18)
is.na(y)
## [1] FALSE FALSE  TRUE FALSE  TRUE FALSE
mean(y)
## [1] NA
mean(y, na.rm = TRUE)   
## [1] 14.5

Základné štatistiky a usporiadanie prvkov vektora podľa veľkosti

z <- c(10, 3, 5, 8, 2)
mean(z)                
## [1] 5.6
sd(z)                
## [1] 3.361547
max(z)                 
## [1] 10
summary(z)             
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     2.0     3.0     5.0     5.6     8.0    10.0
sort(z)                 
## [1]  2  3  5  8 10
sort(z, decreasing = TRUE)  
## [1] 10  8  5  3  2

Malé cvičenie

Vytvorte vektor w s číslami 1..20 a vypočítajte sumu všetkých párnych čísel.

w <- 1:20
even_numbers <- w[w %% 2 == 0]      # vyber párnych čísel
even_numbers          # zobrazíme párne čísla
##  [1]  2  4  6  8 10 12 14 16 18 20
sum_even <- sum(even_numbers)
sum_even              # zobrazíme ich súčet
## [1] 110
length(even_numbers)   # koľko je párnych čísel
## [1] 10

Matice

Vytvorenie matíc

m <- matrix(1:10, nrow = 2, ncol = 5)           
m_byrow <- matrix(1:10, nrow = 2, byrow = TRUE)  
m; m_byrow
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    3    5    7    9
## [2,]    2    4    6    8   10
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    2    3    4    5
## [2,]    6    7    8    9   10

Rozmery matice

dim(m)          
## [1] 2 5
nrow(m)
## [1] 2
m
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    3    5    7    9
## [2,]    2    4    6    8   10

Adresovanie prvkov matice

m[2, 3]    
## [1] 6
m[ , 2]     
## [1] 3 4
m[2, ]
## [1]  2  4  6  8 10
m[1:2, 1:2]
##      [,1] [,2]
## [1,]    1    3
## [2,]    2    4

Maticové operácie

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

A + B        
##      [,1] [,2]
## [1,]    3   11
## [2,]    7   15
A * B       
##      [,1] [,2]
## [1,]    2   30
## [2,]   12   56
A %*% B      
##      [,1] [,2]
## [1,]   20   52
## [2,]   28   76
t(A)         
##      [,1] [,2]
## [1,]    2    4
## [2,]    6    8
det(A)      
## [1] -8
solve(A)     
##      [,1]  [,2]
## [1,] -1.0  0.75
## [2,]  0.5 -0.25

Zlučovanie vektorov do matíc

I <- cbind(2:5, 7:10)
O <- rbind(2:5, 7:10)
I; O
##      [,1] [,2]
## [1,]    2    7
## [2,]    3    8
## [3,]    4    9
## [4,]    5   10
##      [,1] [,2] [,3] [,4]
## [1,]    2    3    4    5
## [2,]    7    8    9   10
rowSums(A)
## [1]  8 12
colSums(A)
## [1]  6 14

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

M <- matrix(2:10, nrow = 3)
M
##      [,1] [,2] [,3]
## [1,]    2    5    8
## [2,]    3    6    9
## [3,]    4    7   10
apply(M, 1, sum)   
## [1] 15 18 21
apply(M, 2, mean) 
## [1] 3 6 9

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)
M2
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    2    3    4    5
## [2,]    6    7    8    9   10
## [3,]   11   12   13   14   15
## [4,]   16   17   18   19   20
## [5,]   21   22   23   24   25
column_sums <- colSums(M2)
column_sums
## [1] 55 60 65 70 75
product_matrix <- t(M2) %*% M2
product_matrix
##      [,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