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 <- 9
b <- 6
# 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 %% 4 # 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
[1] 9
[1] 6
[1] 15
[1] 3
[1] 54
[1] 1.5
[1] 531441
[1] 1
[1] 6
[1] 6
[1] 6
Pozná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 <- "Diana" # definovanie obsahu textovej premennej first
last <- "Ďuriančiková" # 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("hokej", "futbal", "volejbal", sep = ",") # spojenie textov s oddelovacom ,
first; last; full; full_nospace; csv_line # bodkočiarka tu nahradzuje odskok na novy riadok
[1] "Diana"
[1] "Ďuriančiková"
[1] "Diana Ďuriančiková"
[1] "DianaĎuriančiková"
[1] "hokej,futbal,volejbal"
[1] 16
[1] "je"
Tip: Knižnica stringr mnohé zaujímavé možnosti práce s textami, ale implicitné knižnice R pokrývajú väčšinu bežných potrieb páce s textami.
[1] FALSE
[1] FALSE
[1] TRUE
[1] TRUE
[1] TRUE
[1] TRUE
[1] TRUE
[1] TRUE
[1] FALSE
[1] TRUE
[1] TRUE
v1 <- c(3, 5, 7, 9)
v2 <- 3:13 # postupnost 1,2,3,4,5
v3 <- seq(from = 0, to = 14, by = 0.75) # postupnost s krokom 0.25
v4 <- rep(3, times = 7) # 3,3,3,3,3 # 5 clenna postupnost trojak
v5 <- runif(7) # generovanie rovnomerne rozdelenych premennych v intervale [0,1]
v6 <- rnorm(7) # generovanie normalne rozdelenych premennych
v1; v2; v3; v4; v5
[1] 3 5 7 9
[1] 3 4 5 6 7 8 9 10 11 12 13
[1] 0.00 0.75 1.50 2.25 3.00 3.75 4.50 5.25 6.00 6.75 7.50 8.25
[13] 9.00 9.75 10.50 11.25 12.00 12.75 13.50
[1] 3 3 3 3 3 3 3
[1] 0.140987136 0.983422839 0.673229854 0.253766676 0.333837236 0.567667717
[7] 0.007398479
[1] 10 14 17 22
[1] 42 70 91 126
[1] 2.25 3.25 4.00 5.25
[1] 4.034288e+02 2.202647e+04 4.424134e+05 6.565997e+07
[1] 48
[,1]
[1,] 164
[1] 6 20 42
[1] 5
[1] 7
[1] 1.140987 2.983423 3.673230 4.253767 5.333837 1.567668 2.007398
x <- c(8, 66, 45, 3, 17, 90, 26)
x[1] # indexovanie - novy jedno-prvkovy vektor - prvy prvok vektora x
[1] 8
[1] 66 45 3
[1] 66 45 3 17 90 26
[1] 66 45 17 90 26
[1] 2 3 5 6 7
[1] FALSE TRUE FALSE TRUE FALSE
[1] NA
[1] 24
[1] 25.2
[1] 22.86263
[1] 65
Min. 1st Qu. Median Mean 3rd Qu. Max.
8.0 13.0 18.0 25.2 22.0 65.0
[1] 8 13 18 22 65
[1] 65 22 18 13 8
m <- matrix(1:12, nrow = 4, ncol = 5) # hodnoty sú zadavane po stlpcoch
m_byrow <- matrix(1:12, nrow = 4, byrow = TRUE) # hodnoty su zadavane po riadkoch
m; m_byrow
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 1 5
[2,] 2 6 10 2 6
[3,] 3 7 11 3 7
[4,] 4 8 12 4 8
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
[4,] 10 11 12
[1] 4 5
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 1 5
[2,] 2 6 10 2 6
[3,] 3 7 11 3 7
[4,] 4 8 12 4 8
[1] 5
[1] 9 10 11 12
[1] 2 6 10 2 6
[,1] [,2]
[1,] 5 9
[2,] 6 10
[,1] [,2]
[1,] 6 10
[2,] 8 12
[,1] [,2]
[1,] 5 21
[2,] 12 32
[,1] [,2]
[1,] 23 31
[2,] 34 46
[,1] [,2]
[1,] 1 2
[2,] 3 4
[1] -2
[,1] [,2]
[1,] -2 1.5
[2,] 1 -0.5
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
[1] 12 15 18
[1] 2 5 8
Vytvorte maticu 5x5 s hodnotami po riadkoch 1..20, vypočítajte stĺpcové sumy a súčin matíc \(M^t M\).
[1] 45 50 55 60
[,1] [,2] [,3] [,4]
[1,] 565 610 655 700
[2,] 610 660 710 760
[3,] 655 710 765 820
[4,] 700 760 820 880
## Malé cvičenie - Môj návrh
# Vektor dní
dni <- c("Pondelok", "Utorok", "Streda", "Štvrtok", "Piatok")
# Počet zákazníkov v jednotlivých časoch dňa
dopoludnie <- c(30, 45, 35, 40, 50)
popoludnie <- c(55, 60, 58, 65, 70)
vecer <- c(40, 38, 45, 50, 55)
# Vytvorenie matice
navstevnost <- cbind(dopoludnie, popoludnie, vecer)
rownames(navstevnost) <- dni
colnames(navstevnost) <- c("Dopoludnie", "Popoludnie", "Večer")
# Farebný stĺpcový graf
bar_colors <- ifelse(popoludnie > 60, "darkorange", "lightblue")
barplot(
t(navstevnost), # transponujeme, aby stĺpce = dni
beside = TRUE, # stĺpce vedľa seba
col = c("gold", "orange", "brown"), # farby pre časy dňa
names.arg = dni,
legend.text = colnames(navstevnost),
args.legend = list(x = "topright"),
main = "Návštevnosť kaviarne počas týždňa",
ylab = "Počet zákazníkov"
)
##Malé cvičenie - Môj návrh doplnený o matice
# Vektor dní
dni <- c("Pondelok", "Utorok", "Streda", "Štvrtok", "Piatok")
# Hodnotenia spokojnosti (1–10)
kaviaren_A <- c(8, 9, 7, 8, 9)
kaviaren_B <- c(6, 7, 7, 6, 8)
kaviaren_C <- c(9, 9, 8, 10, 9)
# Vytvorenie matice z vektorov
hodnotenia <- cbind(kaviaren_A, kaviaren_B, kaviaren_C)
rownames(hodnotenia) <- dni
colnames(hodnotenia) <- c("Kaviareň A", "Kaviareň B", "Kaviareň C")
# Zobrazenie matice
hodnotenia
Kaviareň A Kaviareň B Kaviareň C
Pondelok 8 6 9
Utorok 9 7 9
Streda 7 7 8
Štvrtok 8 6 10
Piatok 9 8 9
## Kaviareň A Kaviareň B Kaviareň C
## Pondelok 8 6 9
## Utorok 9 7 9
## Streda 7 7 8
## Štvrtok 8 6 10
## Piatok 9 8 9
# Výpočet priemernej spokojnosti pre každú kaviareň
priemery <- colMeans(hodnotenia)
# Výpis
priemery
Kaviareň A Kaviareň B Kaviareň C
8.2 6.8 9.0
## Kaviareň A Kaviareň B Kaviareň C
## 8.2 6.8 9.0
# Farebný stĺpcový graf
barplot(
priemery,
col = c("lightblue", "lightgreen", "pink"),
main = "Priemerná spokojnosť zákazníkov v kaviarňach",
ylab = "Priemerné hodnotenie (1–10)",
ylim = c(0, 10)
)
# Označenie najlepšej kaviarne
najlepsia <- names(which.max(priemery))
text(2, 9.5, paste("Najlepšia je:", najlepsia), col = "darkred", cex = 1.1)