Generovanie vektorov
# 1 generovanie rôznych typov vektorov
v1 <- c(2, 4, 6, 8) # manuálne zadaný vektor
v2 <- 1:5 # aritmetická postupnosť
v3 <- seq(from = 0, to = 1, by = 0.25) # sekvencia s krokom 0.25
v4 <- rep(3, times = 5) # opakovanie čísla
v5 <- runif(5, min = -1, max = 1) # náhodné čísla (rovnomerné rozdelenie)
v6 <- rnorm(5, mean = 10, sd = 2) # normálne rozdelenie so stredom 10
v1; v2; v3; v4; v5; v6
## [1] 2 4 6 8
## [1] 1 2 3 4 5
## [1] 0.00 0.25 0.50 0.75 1.00
## [1] 3 3 3 3 3
## [1] -0.36579445 0.95371219 0.01398345 -0.05403417 0.39688422
## [1] 10.33271 10.14679 11.68088 10.74001 14.10938
# 2 Kombinácia vektorov
v_all <- c(v1, v2, v3, v4)
v_all_sorted <- sort(v_all, decreasing = FALSE)
cat("\n Zlúčený a roztriedený vektor:\n")
##
## Zlúčený a roztriedený vektor:
## [1] 0.00 0.25 0.50 0.75 1.00 1.00 2.00 2.00 3.00 3.00 3.00 3.00 3.00 3.00 4.00
## [16] 4.00 5.00 6.00 8.00
# 3 Krátka analýza
mean_v6 <- mean(v6)
sd_v6 <- sd(v6)
cat("\n Analýza normálne rozdelených hodnôt (v6):\n")
##
## Analýza normálne rozdelených hodnôt (v6):
cat("Priemer =", round(mean_v6, 2), ", smerodajná odchýlka =", round(sd_v6, 2), "\n")
## Priemer = 11.4 , smerodajná odchýlka = 1.63
Malé cvičenie
# 1 Vytvorenie vektorov
vek_seq <- seq(from = 5, to = 20, by = 3) # postupnosť s krokom 3
vek_rep <- rep(2, times = 6) # opakovanie čísla 2 šesťkrát
vek_norm <- rnorm(6, mean = 10, sd = 2) # 6 náhodných hodnôt ~ N(10, 2)
vek_seq; vek_rep; vek_norm;
## [1] 5 8 11 14 17 20
## [1] 2 2 2 2 2 2
## [1] 9.117164 6.845734 12.072471 11.912294 8.747027 9.369683
# 1 Spojenie do jedného vektora
vek_spojeny <- c(vek_seq, vek_rep, vek_norm)
cat("Spojený vektor:\n")
## Spojený vektor:
print(round(vek_spojeny, 2))
## [1] 5.00 8.00 11.00 14.00 17.00 20.00 2.00 2.00 2.00 2.00 2.00 2.00
## [13] 9.12 6.85 12.07 11.91 8.75 9.37
# 3 Výpočty základných štatistík
priemer <- mean(vek_spojeny)
median <- median(vek_spojeny)
maximum <- max(vek_spojeny)
cat("\n Štatistiky:\n")
##
## Štatistiky:
cat("Priemer =", round(priemer, 2),
"\nMedián =", round(median, 2),
"\nMaximum =", round(maximum, 2), "\n")
## Priemer = 8.06
## Medián = 8.37
## Maximum = 20
# 4 Analýza nadpriemerných hodnôt
nadpriemerne <- vek_spojeny[vek_spojeny > priemer]
pocet_nadpriemernych <- length(nadpriemerne)
cat("\n Počet hodnôt väčších ako priemer:", pocet_nadpriemernych, "\n")
##
## Počet hodnôt väčších ako priemer: 9
cat("Tieto hodnoty sú:", round(nadpriemerne, 2), "\n")
## Tieto hodnoty sú: 11 14 17 20 9.12 12.07 11.91 8.75 9.37
# 5 Vizualizácia
hist(vek_spojeny,
col = "lightgreen",
border = "white",
main = "Histogram spojeného vektora",
xlab = "Hodnoty",
ylab = "Frekvencia")

# 7 Bonus – čo ak zvýšime rozptyl?
vek_norm_wide <- rnorm(1000, mean = 10, sd = 5)
hist(vek_norm_wide,
col = "lightcoral",
border = "white",
main = "Normálne rozdelenie s väčšou smerodajnou odchýlkou (sd = 5)",
xlab = "Hodnota")
Aritmetické operácie s vektormi
# 1 Definícia vektora
v <- c(1, 2, 3, 4)
u <- c(2, 0, 1, 3)
v; u;
## [1] 1 2 3 4
## [1] 2 0 1 3
# 2 Základné operácie s vektormi
v_plus_10 <- v + 10
v_times_2 <- v * 2
v_transformed <- (v + 1) / 2
v_exp <- exp(v)
cat("\n Základné operácie s vektormi:\n")
##
## Základné operácie s vektormi:
cat("v + 10 =", v_plus_10, "\n")
## v + 10 = 11 12 13 14
cat("v * 2 =", v_times_2, "\n")
## v * 2 = 2 4 6 8
cat("(v + 1)/2 =", v_transformed, "\n")
## (v + 1)/2 = 1 1.5 2 2.5
cat("exp(v) =", round(v_exp, 3), "\n")
## exp(v) = 2.718 7.389 20.086 54.598
# 3 Operácie medzi vektormi
skalar_sucin_sum <- sum(v * u) # skalárny súčin cez sumu
skalar_sucin_cross <- crossprod(v, u) # skalárny súčin cez funkciu (matica 1x1)
hadamard_sucin <- v * u # súčin po prvkoch
cat("\n Operácie medzi vektormi v a u:\n")
##
## Operácie medzi vektormi v a u:
cat("Skalárny súčin (sum) =", skalar_sucin_sum, "\n")
## Skalárny súčin (sum) = 17
cat("Skalárny súčin (crossprod) =", skalar_sucin_cross, "\n")
## Skalárny súčin (crossprod) = 17
cat("Hadamardov súčin =", hadamard_sucin, "\n")
## Hadamardov súčin = 2 0 3 12
Malé cvičenie
# Ukážka lineárnej kombinácie
kombinacia <- 2*v + 3*u
cat("\n Lineárna kombinácia 2*v + 3*u:\n")
##
## Lineárna kombinácia 2*v + 3*u:
## [1] 8 4 9 17
Matematické operácie s 2 vektormi rovnakého rozmeru
# 1 Definícia vektorov
v1 <- c(1, 2, 3, 4, 5)
v2 <- runif(5, min = 0, max = 10) # náhodný vektor rovnakého rozmeru
v1; v2;
## [1] 1 2 3 4 5
## [1] 2.1972297 0.6069964 6.0922030 7.1643729 5.7304644
# 2 Overenie dĺžok
cat("Dĺžka v1:", length(v1), "\n")
## Dĺžka v1: 5
cat("Dĺžka v2:", length(v2), "\n")
## Dĺžka v2: 5
# 3 Ak majú rovnakú dĺžku → môžeme sčítať
if (length(v1) == length(v2)) {
v_sum <- v1 + v2
cat("\n Súčet vektorov v1 + v2:\n")
print(round(v_sum, 2))
} else {
cat("\n Vektory nemajú rovnaký rozmer – nemožno ich sčítať.\n")
}
##
## Súčet vektorov v1 + v2:
## [1] 3.20 2.61 9.09 11.16 10.73
# 4 Ukážka, čo sa stane pri rôznych rozmeroch
v3 <- c(1, 2, 3)
cat("\n Pokus o sčítanie v1 + v3 (nerovnaké dĺžky):\n")
##
## Pokus o sčítanie v1 + v3 (nerovnaké dĺžky):
print(v1 + v3) # R tu automaticky recykluje prvky kratšieho vektora
## Warning in v1 + v3: longer object length is not a multiple of shorter object
## length
## [1] 2 4 6 5 7
Malé cvičenie
# 6 Rozdiel a priemer
v_diff <- v1 - v2
v_mean <- (v1 + v2) / 2
cat("\n Rozdiel v1 - v2:", round(v_diff, 2), "\n")
##
## Rozdiel v1 - v2: -1.2 1.39 -3.09 -3.16 -0.73
cat("Priemer (v1 a v2):", round(v_mean, 2), "\n")
## Priemer (v1 a v2): 1.6 1.3 4.55 5.58 5.37
Indexovanie a výber niektorych prvkov vektora
# 1 Definícia vektora
x <- c(5, 12, 3, 18, 7, 0, 21)
# 2 Základné formy indexovania
x[1] # prvý prvok vektora
## [1] 5
x[2:4] # druhý až štvrtý prvok
## [1] 12 3 18
x[-1] # všetky prvky okrem prvého
## [1] 12 3 18 7 0 21
x[c(1, 3, 5)] # výber konkrétnych pozícií
## [1] 5 3 7
x[length(x)] # posledný prvok
## [1] 21
# 3 Logické podmienky a výber podľa hodnoty
x[x > 10] # všetky prvky väčšie ako 10
## [1] 12 18 21
x[x %% 2 == 0] # všetky párne prvky
## [1] 12 18 0
x[x <= mean(x)] # prvky menšie alebo rovné priemeru
## [1] 5 3 7 0
# 4 Funkcia which() – indexy, ktoré spĺňajú podmienku
which(x > 10)
## [1] 2 4 7
which.min(x) # pozícia najmenšej hodnoty
## [1] 6
which.max(x) # pozícia najväčšej hodnoty
## [1] 7
# 5 Kombinácia indexovania a úprav
x_new <- x
x_new[x_new < 5] <- 0 # všetky hodnoty menšie ako 5 nahradíme nulou
x_new
## [1] 5 12 0 18 7 0 21
# 6 Analýza
cat("Pôvodný vektor:", x, "\n")
## Pôvodný vektor: 5 12 3 18 7 0 21
cat("Upravený vektor:", x_new, "\n")
## Upravený vektor: 5 12 0 18 7 0 21
cat("Indexy hodnôt väčších ako 10:", which(x > 10), "\n")
## Indexy hodnôt väčších ako 10: 2 4 7
cat("Najmenšia hodnota =", min(x), "na pozícii", which.min(x), "\n")
## Najmenšia hodnota = 0 na pozícii 6
cat("Najväčšia hodnota =", max(x), "na pozícii", which.max(x), "\n")
## Najväčšia hodnota = 21 na pozícii 7
Práca s chýbajúcimi hodnotami
# 1 Definícia vektora s chýbajúcimi hodnotami
y <- c(1, NA, 3, NA, 5)
# 2 Identifikácia chýbajúcich hodnôt
is.na(y) # logický vektor – TRUE tam, kde je NA
## [1] FALSE TRUE FALSE TRUE FALSE
which(is.na(y)) # pozície, kde sa nachádza NA
## [1] 2 4
sum(is.na(y)) # počet chýbajúcich hodnôt
## [1] 2
# 3 Základné operácie
mean(y) # vráti NA, pretože vektor obsahuje NA
## [1] NA
mean(y, na.rm = TRUE) # ignoruje NA pri výpočte priemeru
## [1] 3
sum(y, na.rm = TRUE) # súčet bez NA hodnôt
## [1] 9
length(y[!is.na(y)]) # počet ne-NA hodnôt
## [1] 3
# 4 Náhrada chýbajúcich hodnôt
y_filled_mean <- y
y_filled_mean[is.na(y_filled_mean)] <- mean(y, na.rm = TRUE) # nahradíme NA priemerom
y_filled_zero <- y
y_filled_zero[is.na(y_filled_zero)] <- 0 # nahradíme NA nulou
# 5 Porovnanie výsledkov
cat("Pôvodný vektor:", y, "\n")
## Pôvodný vektor: 1 NA 3 NA 5
cat("Počet NA:", sum(is.na(y)), "\n\n")
## Počet NA: 2
cat("Vektor s NA nahradenými priemerom:", round(y_filled_mean, 2), "\n")
## Vektor s NA nahradenými priemerom: 1 3 3 3 5
cat("Vektor s NA nahradenými nulou:", y_filled_zero, "\n")
## Vektor s NA nahradenými nulou: 1 0 3 0 5
Základné štatistiky a usporiadanie prvkov vektora podľa
veľkosti
# 1 Definícia vektora
z <- c(10, 3, 5, 8, 2)
# 2 Výpočet základných štatistík
priemer <- mean(z)
smer_odch <- sd(z)
maximum <- max(z)
minimum <- min(z)
median_z <- median(z)
rozsah <- range(z)
# 3 Výstup základných štatistík
cat("Základné štatistiky vektora z:\n")
## Základné štatistiky vektora z:
cat("Priemer =", priemer, "\n")
## Priemer = 5.6
cat("Smerodajná odchýlka =", round(smer_odch, 2), "\n")
## Smerodajná odchýlka = 3.36
cat("Minimum =", minimum, ", Maximum =", maximum, "\n")
## Minimum = 2 , Maximum = 10
cat("Medián =", median_z, "\n")
## Medián = 5
cat("Rozsah hodnôt =", paste(rozsah, collapse = " – "), "\n\n")
## Rozsah hodnôt = 2 – 10
# 4 Rýchly prehľad pomocou summary()
summary(z)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 2.0 3.0 5.0 5.6 8.0 10.0
# 5 Usporiadanie hodnôt
z_rastuce <- sort(z)
z_klesajuce <- sort(z, decreasing = TRUE)
z_poradie <- order(z) # indexy podľa rastúceho poradia
cat("\nRastúce poradie:", z_rastuce, "\n")
##
## Rastúce poradie: 2 3 5 8 10
cat("Klesajúce poradie:", z_klesajuce, "\n")
## Klesajúce poradie: 10 8 5 3 2
cat("Indexy podľa rastúceho poradia:", z_poradie, "\n")
## Indexy podľa rastúceho poradia: 5 2 3 4 1
Malé cvičenie
# Normalizácia hodnôt
z_normalized <- (z - min(z)) / (max(z) - min(z))
cat("\nNormalizované hodnoty (0–1):\n")
##
## Normalizované hodnoty (0–1):
print(round(z_normalized, 2))
## [1] 1.00 0.12 0.38 0.75 0.00