V nižšie uvedenom Chunku je urobené základné globálne nastavenie Chunkov v celom Notebooku.
Tento notebook demonštruje základné operácie v jazyku R so:
Tam, kde je to užitočné, sú zahrnuté malé cvičenia.
# Priradenie konštanty do premennej
a <- 7
b <- 3.5
# Arithmetic
sum_ab <- a + b # sucet
diff_ab <- a - b # rozdiel
prod_ab <- a * b # násobenie
quot_ab <- a / b # delenie
power_ab <- a ^ b # umocňovanie
mod_ab <- a %% 3 # zbytok po delení tromi (tzv modulo)
# Rounding
round_b <- round(b) # zaokruhlovanie smerom k najblizsiemu celemu cislu
ceil_b <- ceiling(b) # najblizsie vyssie cele cislo
floor_b <- floor(b) # najblizsie nizsie cele cislo
a; b
sum_ab; diff_ab; prod_ab; quot_ab; power_ab; mod_ab; int_div_ab
round_b; ceil_b; floor_bPoznámky
^ operátor umocňovania.%% je modulo, teda zbytok po delení,round(x, digits = 0) zaokrúhľovanie na určitý počet
desatinných miest (digits=). ak digits = 0, potom ide o celočíselné
zaokrúhľovaniefirst <- "Vladimir" # definovanie obsahu textovej premennej first
last <- "Gazda" # definovanie obsahu text. premennej last
full <- paste(first, last) # spojenie dvoch text. premennych do jednej (s medzerou)
full_nospace <- paste0(first, last) # spojenie bez medzery
csv_line <- paste("apple", "banana", "pear", sep = ",") # spojenie textov s oddelovacom ,
first; last; full; full_nospace; csv_line # bodkočiarka tu nahradzuje odskok na novy riadok v1 <- c(2, 4, 6, 8)
v2 <- 1:5 # postupnost 1,2,3,4,5
v3 <- seq(from = 0, to = 1, by = 0.25) # postupnost s krokom 0.25
v4 <- rep(3, times = 5) # 3,3,3,3,3 # 5 clenna postupnost trojak
v5 <- runif(5) # generovanie rovnomerne rozdelenych premennych v intervale [0,1]
v6 <- rnorm(5) # generovanie normalne rozdelenych premennych
v1; v2; v3; v4; v5v <- c(1, 2, 3, 4)
v + 10 # kazdy prvok vektora zvacsime o 10
v * 2 # kazdy prvok vektora prenasobime 2
(v + 1) / 2
exp(v) # exponencialna funkcia z kazdeho prvku vektora
sum(c(1,2,3),c(1,1,1)) # skalarny sucin - vysledok je skalar
crossprod(c(1,2,3),c(1,1,1)) # skalarny sucin - vysledok je matica 1x1
c(1,2,3)*c(1,1,1) # Hadamardov sucin (sucin zodpovedajucich prvkov vektora)x <- c(5, 12, 3, 18, 7, 0, 21)
x[1] # indexovanie - novy jedno-prvkovy vektor - prvy prvok vektora x
x[2:4] # novy vektor s druhym az stvrtym prvkom vektora x
x[-1] # novy vektor - vsetky prvky vektora x okrem prvého
x[x > 10] # novy vektor definovany prvkami x vacsimi ako 10
which(x > 10) # ktore prvky zodpovedaju podmienke vacsieho ako 10?A <- matrix(c(1,2,3,4), nrow = 2)
B <- matrix(c(5,6,7,8), nrow = 2)
A + B # scitanie matic
A * B # Hadamard product - nasobenie po zodpovedajucich prvkoch
A %*% B # nasobenie matic
t(A) # transpozicia matice A - vymena riadkov a stlpcov
det(A) # determinant matice
solve(A) # inverzia matice (ak je matica regularna - teda inverzia sa da spocitat)Vytvorte náhodnú maticu A veľkosti 6x6 s hodnotami z intervalu 1..10.
set.seed(123) # aby boli čísla vždy rovnaké pri spustení
# 1. vytvorenie náhodnej matice 6x6
A <- matrix(sample(1:10, 36, replace = TRUE), nrow = 6, ncol = 6)
# 2. súčet prvkov na hlavnej diagonále
diag_sum <- sum(diag(A))
# 3. výpočet inverznej matice
A_inv <- solve(A)
# 4. overenie, že A %*% A_inv ≈ jednotková matica
overenie <- round(A %*% A_inv, 3)
A [,1] [,2] [,3] [,4] [,5] [,6]
[1,] 3 4 9 7 7 10
[2,] 3 6 9 10 5 7
[3,] 10 9 9 9 10 5
[4,] 2 10 3 3 7 7
[5,] 6 5 8 4 9 5
[6,] 5 3 10 1 9 6
[1] 36
[,1] [,2] [,3] [,4]
[1,] 0.18553780 -0.24606143 0.41255809 -0.030828516
[2,] -0.15448260 0.09888927 0.08868865 0.125240848
[3,] -0.17363708 0.19148816 0.01127734 -0.009633911
[4,] 0.01983452 0.07571121 -0.12694095 -0.067437380
[5,] -0.04975632 0.01864445 -0.38155956 -0.030828516
[6,] 0.28335033 -0.20412558 0.18655786 0.036608863
[,5] [,6]
[1,] -0.6722203 0.2301938
[2,] -0.3168990 0.1861612
[3,] -0.2652159 0.2888473
[4,] 0.4376063 -0.3015981
[5,] 1.0336620 -0.4462768
[6,] -0.4627678 0.1200272
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 0 0 0 0 0
[2,] 0 1 0 0 0 0
[3,] 0 0 1 0 0 0
[4,] 0 0 0 1 0 0
[5,] 0 0 0 0 1 0
[6,] 0 0 0 0 0 1
#vlastné cvičenie > Máte denné teploty počas 30 dní v mesiaci (náhodné hodnoty od 15 do 35 °C).
set.seed(101) # opakovateľné výsledky
# 1. denné teploty (30 dní)
temp <- sample(15:35, 30, replace = TRUE)
# 2. priemerná teplota
priemer <- mean(temp)
# 3. počet dní nad 30°C
horuce_dni <- sum(temp > 30)
# 4. najteplejší a najchladnejší deň
najteplejsi <- which.max(temp)
najchladnejsi <- which.min(temp)
# 5. anomálie (odchýlky od priemeru)
temp_anom <- temp - priemer
temp [1] 23 28 31 17 17 23 17 17 16 34 35 31 28 26 15 27 20 30
[19] 35 24 25 35 35 34 28 22 22 34 20 21
[1] 25.66667
[1] 9
[1] 11
[1] 15
[1] -2.6666667 2.3333333 5.3333333 -8.6666667
[5] -8.6666667 -2.6666667 -8.6666667 -8.6666667
[9] -9.6666667 8.3333333 9.3333333 5.3333333
[13] 2.3333333 0.3333333 -10.6666667 1.3333333
[17] -5.6666667 4.3333333 9.3333333 -1.6666667
[21] -0.6666667 9.3333333 9.3333333 8.3333333
[25] 2.3333333 -3.6666667 -3.6666667 8.3333333
[29] -5.6666667 -4.6666667