Globálne nastavenie Chunkov

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

Numerické hodnoty

Simulácia náhodných dát

set.seed(42)
data <- rnorm(100, mean = 50, sd = 10)  # 100 náhodných hodnôt ~ N(50,10)

summary(data)    # základné štatistiky
hist(data, main="Histogram hodnôt", col="purple")

Malé cvičenie

Vytvorte 50 náhodných hodnôt z rovnomerného rozdelenia na intervale [10, 20] a spočítajte, koľko z nich je väčších ako 15.

Riešenie:

set.seed(123)
u <- runif(50, min = 10, max = 20)
sum(u > 15)

Logické hodnoty

vek <- c(15, 18, 25, 70, 12, 40)
vek >= 18
sum(vek >= 18)   # počet dospelých

Malé cvičenie

Napíšte podmienku, ktorá určí, ktorí ľudia majú medzi 18 a 65 rokmi (t.j. sú v produktívnom veku).

Riešenie:

vek <- c(15, 18, 25, 70, 12, 40)
produkt_vek <- vek >= 18 & vek <= 65
vek[produkt_vek]

Textové reťazce

Práca so slovami

veticka <- "Programovanie v R je veľmi flexibilné a zábavné"
slova <- strsplit(veticka, " ")[[1]]
length(slova)        # počet slov
toupper(slova)       # všetky slová veľkými písmenami
grep("R", slova)     # pozícia slova "R"

Malé cvičenie

Napíšte vetu podľa seba a:
1. rozdeľte ju na slová,
2. spočítajte počet písmen vo všetkých slovách dokopy,
3. vymeňte jedno slovo za iné pomocou gsub().

Riešenie:

moj_text <- "Učenie R Markdown je veľmi užitočné a zaujímavé"
slova2 <- strsplit(moj_text, " ")[[1]]
# 1. rozdelenie
slova2
# 2. počet písmen dokopy
sum(nchar(slova2))
# 3. zmena slova "užitočné" na "praktické"
novy_text <- gsub("užitočné", "praktické", moj_text)
novy_text

Môj návrh použitia novinky

Vytvoríme vlastnú funkciu, ktorá z textu spraví štatistiku slov:

analyzuj_text <- function(txt) {
  slova <- strsplit(txt, " ")[[1]]
  dlzky <- nchar(slova)
  list(
    pocet_slov = length(slova),
    priemerna_dlzka = mean(dlzky),
    najdlhsie_slovo = slova[which.max(dlzky)]
  )
}

analyzuj_text("Dnes sa učíme programovať v jazyku R Markdown")

Numerické vektory

Generovanie vektorov

a <- seq(5, 25, by = 5)
b <- rep(2, times = 5)
c <- runif(6, min = 0, max = 10)
d <- rnorm(5, mean = 100, sd = 15)
a; b; c; d

🧩 Malé cvičenie 1

Vytvorte vektor temp obsahujúci denné teploty (v stupňoch C) za týždeň: 12, 14, 15, 11, 9, 8, 10.
Zistite: - priemernú teplotu,
- maximálnu teplotu,
- ktoré dni mali teplotu nižšiu ako priemer.

temp <- c(12, 14, 15, 11, 9, 8, 10)
mean(temp)
max(temp)
temp[temp < mean(temp)]

🧩 Malé cvičenie 2

Vytvorte vektor sales s hodnotami: 150, 200, 170, 220, 190.
Spočítajte: - celkový predaj,
- percentuálny podiel každého dňa na celkovom predaji.

sales <- c(150, 200, 170, 220, 190)
sum(sales)
round(sales / sum(sales) * 100, 2)

Matice

Vytvorenie matíc

M <- matrix(1:12, nrow = 3, byrow = TRUE)
M

🧩 Malé cvičenie 3

Vytvorte maticu grades (3x4), kde riadky reprezentujú študentov a stĺpce ich známky z testov:
1. študent: 78, 85, 90, 88
2. študent: 92, 81, 77, 95
3. študent: 85, 89, 91, 87

Zistite priemerné skóre každého študenta (po riadkoch) a priemerné hodnotenie z každého testu (po stĺpcoch).

grades <- matrix(c(78,85,90,88, 92,81,77,95, 85,89,91,87), nrow = 3, byrow = TRUE)
grades
rowMeans(grades)
colMeans(grades)

🧩 Malé cvičenie 4

Vytvorte maticu A (3x3) s hodnotami 2..10 po riadkoch a spočítajte: - determinant matice,
- transpozíciu,
- súčin \(A^T A\).

A <- matrix(2:10, nrow = 3, byrow = TRUE)
det(A)
t(A)
t(A) %*% A

🧩 Malé cvičenie 5

Vytvorte maticu B rozmeru 4x4 s hodnotami od 10 do 25 po stĺpcoch.
Zistite súčet všetkých hodnôt väčších ako 18 a počet prvkov menších ako 15.

B <- matrix(10:25, nrow = 4)
sum(B[B > 18])
sum(B < 15)
LS0tCnRpdGxlOiAiWsOha2xhZG7DqSBvcGVyw6FjaWUgdiBSIgphdXRob3I6ICJNw6FyaWEgTWF0w7rFoW92w6EiCmRhdGU6ICJTZXB0ZW1iZXIgMjAyNSIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICB0b2M6IHRydWUKICAgIHRvY19mbG9hdDogdHJ1ZQogICAgdGhlbWU6IHVuaXRlZAogICAgaGlnaGxpZ2h0OiBrYXRlCiAgaHRtbF9kb2N1bWVudDoKICAgIHRvYzogdHJ1ZQogICAgZGZfcHJpbnQ6IHBhZ2VkCmVkaXRvcl9vcHRpb25zOgogIG1hcmtkb3duOgogICAgd3JhcDogNzIKLS0tCgojIEdsb2LDoWxuZSBuYXN0YXZlbmllIENodW5rb3YKCmBgYHtyIHNldHVwLCBpbmNsdWRlPVRSVUUsIGVjaG89VFJVRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KAogIGVjaG8gPSBUUlVFLAogIG1lc3NhZ2UgPSBGQUxTRSwKICB3YXJuaW5nID0gRkFMU0UKKQpgYGAKCi0tLQoKIyBOdW1lcmlja8OpIGhvZG5vdHkgCgojIyBTaW11bMOhY2lhIG7DoWhvZG7DvWNoIGTDoXQKCmBgYHtyfQpzZXQuc2VlZCg0MikKZGF0YSA8LSBybm9ybSgxMDAsIG1lYW4gPSA1MCwgc2QgPSAxMCkgICMgMTAwIG7DoWhvZG7DvWNoIGhvZG7DtHQgfiBOKDUwLDEwKQoKc3VtbWFyeShkYXRhKSAgICAjIHrDoWtsYWRuw6kgxaF0YXRpc3Rpa3kKaGlzdChkYXRhLCBtYWluPSJIaXN0b2dyYW0gaG9kbsO0dCIsIGNvbD0icHVycGxlIikKYGBgCgojIyBNYWzDqSBjdmnEjWVuaWUKVnl0dm9ydGUgNTAgbsOhaG9kbsO9Y2ggaG9kbsO0dCB6IHJvdm5vbWVybsOpaG8gcm96ZGVsZW5pYSBuYSBpbnRlcnZhbGUgWzEwLCAyMF0gYSBzcG/EjcOtdGFqdGUsIGtvxL5rbyB6IG5pY2ggamUgdsOkxI3FocOtY2ggYWtvIDE1LgoKKipSaWXFoWVuaWU6KioKYGBge3J9CnNldC5zZWVkKDEyMykKdSA8LSBydW5pZig1MCwgbWluID0gMTAsIG1heCA9IDIwKQpzdW0odSA+IDE1KQpgYGAKCi0tLQoKIyBMb2dpY2vDqSBob2Rub3R5IAoKYGBge3J9CnZlayA8LSBjKDE1LCAxOCwgMjUsIDcwLCAxMiwgNDApCnZlayA+PSAxOApzdW0odmVrID49IDE4KSAgICMgcG/EjWV0IGRvc3BlbMO9Y2gKYGBgCgojIyBNYWzDqSBjdmnEjWVuaWUKTmFww63FoXRlIHBvZG1pZW5rdSwga3RvcsOhIHVyxI3DrSwga3RvcsOtIMS+dWRpYSBtYWrDuiBtZWR6aSAxOCBhIDY1IHJva21pICh0LmouIHPDuiB2IHByb2R1a3TDrXZub20gdmVrdSkuCgoqKlJpZcWhZW5pZToqKgpgYGB7cn0KdmVrIDwtIGMoMTUsIDE4LCAyNSwgNzAsIDEyLCA0MCkKcHJvZHVrdF92ZWsgPC0gdmVrID49IDE4ICYgdmVrIDw9IDY1CnZla1twcm9kdWt0X3Zla10KYGBgCgotLS0KCiMgVGV4dG92w6kgcmXFpWF6Y2UKCiMjIFByw6FjYSBzbyBzbG92YW1pCgpgYGB7cn0KdmV0aWNrYSA8LSAiUHJvZ3JhbW92YW5pZSB2IFIgamUgdmXEvm1pIGZsZXhpYmlsbsOpIGEgesOhYmF2bsOpIgpzbG92YSA8LSBzdHJzcGxpdCh2ZXRpY2thLCAiICIpW1sxXV0KbGVuZ3RoKHNsb3ZhKSAgICAgICAgIyBwb8SNZXQgc2xvdgp0b3VwcGVyKHNsb3ZhKSAgICAgICAjIHbFoWV0a3kgc2xvdsOhIHZlxL5rw71taSBww61zbWVuYW1pCmdyZXAoIlIiLCBzbG92YSkgICAgICMgcG96w61jaWEgc2xvdmEgIlIiCmBgYAoKIyMgTWFsw6kgY3ZpxI1lbmllCk5hcMOtxaF0ZSB2ZXR1IHBvZMS+YSBzZWJhIGE6ICAKMS4gcm96ZGXEvnRlIGp1IG5hIHNsb3bDoSwgIAoyLiBzcG/EjcOtdGFqdGUgcG/EjWV0IHDDrXNtZW4gdm8gdsWhZXRrw71jaCBzbG92w6FjaCBkb2tvcHksICAKMy4gdnltZcWIdGUgamVkbm8gc2xvdm8gemEgaW7DqSBwb21vY291IGBnc3ViKClgLgoKKipSaWXFoWVuaWU6KioKYGBge3J9Cm1val90ZXh0IDwtICJVxI1lbmllIFIgTWFya2Rvd24gamUgdmXEvm1pIHXFvml0b8SNbsOpIGEgemF1asOtbWF2w6kiCnNsb3ZhMiA8LSBzdHJzcGxpdChtb2pfdGV4dCwgIiAiKVtbMV1dCiMgMS4gcm96ZGVsZW5pZQpzbG92YTIKIyAyLiBwb8SNZXQgcMOtc21lbiBkb2tvcHkKc3VtKG5jaGFyKHNsb3ZhMikpCiMgMy4gem1lbmEgc2xvdmEgInXFvml0b8SNbsOpIiBuYSAicHJha3RpY2vDqSIKbm92eV90ZXh0IDwtIGdzdWIoInXFvml0b8SNbsOpIiwgInByYWt0aWNrw6kiLCBtb2pfdGV4dCkKbm92eV90ZXh0CmBgYAoKLS0tCgojIE3DtGogbsOhdnJoIHBvdcW+aXRpYSBub3Zpbmt5CgpWeXR2b3LDrW1lICoqdmxhc3Ruw7ogZnVua2NpdSoqLCBrdG9yw6EgeiB0ZXh0dSBzcHJhdsOtIMWhdGF0aXN0aWt1IHNsb3Y6CgpgYGB7cn0KYW5hbHl6dWpfdGV4dCA8LSBmdW5jdGlvbih0eHQpIHsKICBzbG92YSA8LSBzdHJzcGxpdCh0eHQsICIgIilbWzFdXQogIGRsemt5IDwtIG5jaGFyKHNsb3ZhKQogIGxpc3QoCiAgICBwb2NldF9zbG92ID0gbGVuZ3RoKHNsb3ZhKSwKICAgIHByaWVtZXJuYV9kbHprYSA9IG1lYW4oZGx6a3kpLAogICAgbmFqZGxoc2llX3Nsb3ZvID0gc2xvdmFbd2hpY2gubWF4KGRsemt5KV0KICApCn0KCmFuYWx5enVqX3RleHQoIkRuZXMgc2EgdcSNw61tZSBwcm9ncmFtb3ZhxaUgdiBqYXp5a3UgUiBNYXJrZG93biIpCmBgYAoKLS0tCgojIE51bWVyaWNrw6kgdmVrdG9yeQoKIyMgR2VuZXJvdmFuaWUgdmVrdG9yb3YKCmBgYHtyfQphIDwtIHNlcSg1LCAyNSwgYnkgPSA1KQpiIDwtIHJlcCgyLCB0aW1lcyA9IDUpCmMgPC0gcnVuaWYoNiwgbWluID0gMCwgbWF4ID0gMTApCmQgPC0gcm5vcm0oNSwgbWVhbiA9IDEwMCwgc2QgPSAxNSkKYTsgYjsgYzsgZApgYGAKCiMjIPCfp6kgTWFsw6kgY3ZpxI1lbmllIDEKCj4gVnl0dm9ydGUgdmVrdG9yIGB0ZW1wYCBvYnNhaHVqw7pjaSBkZW5uw6kgdGVwbG90eSAodiBzdHVwxYhvY2ggQykgemEgdMO9xb5kZcWIOiAxMiwgMTQsIDE1LCAxMSwgOSwgOCwgMTAuICAKPiBaaXN0aXRlOgo+IC0gcHJpZW1lcm7DuiB0ZXBsb3R1LCAgCj4gLSBtYXhpbcOhbG51IHRlcGxvdHUsICAKPiAtIGt0b3LDqSBkbmkgbWFsaSB0ZXBsb3R1IG5pxb7FoWl1IGFrbyBwcmllbWVyLgoKYGBge3J9CnRlbXAgPC0gYygxMiwgMTQsIDE1LCAxMSwgOSwgOCwgMTApCm1lYW4odGVtcCkKbWF4KHRlbXApCnRlbXBbdGVtcCA8IG1lYW4odGVtcCldCmBgYAoKLS0tCgojIyDwn6epIE1hbMOpIGN2acSNZW5pZSAyCgo+IFZ5dHZvcnRlIHZla3RvciBgc2FsZXNgIHMgaG9kbm90YW1pOiAxNTAsIDIwMCwgMTcwLCAyMjAsIDE5MC4gIAo+IFNwb8SNw610YWp0ZToKPiAtIGNlbGtvdsO9IHByZWRhaiwgIAo+IC0gcGVyY2VudHXDoWxueSBwb2RpZWwga2HFvmTDqWhvIGTFiGEgbmEgY2Vsa292b20gcHJlZGFqaS4KCmBgYHtyfQpzYWxlcyA8LSBjKDE1MCwgMjAwLCAxNzAsIDIyMCwgMTkwKQpzdW0oc2FsZXMpCnJvdW5kKHNhbGVzIC8gc3VtKHNhbGVzKSAqIDEwMCwgMikKYGBgCgotLS0KCiMgTWF0aWNlCgojIyBWeXR2b3JlbmllIG1hdMOtYwoKYGBge3J9Ck0gPC0gbWF0cml4KDE6MTIsIG5yb3cgPSAzLCBieXJvdyA9IFRSVUUpCk0KYGBgCgojIyDwn6epIE1hbMOpIGN2acSNZW5pZSAzCgo+IFZ5dHZvcnRlIG1hdGljdSBgZ3JhZGVzYCAoM3g0KSwga2RlIHJpYWRreSByZXByZXplbnR1asO6IMWhdHVkZW50b3YgYSBzdMS6cGNlIGljaCB6bsOhbWt5IHogdGVzdG92OiAgCj4gMS4gxaF0dWRlbnQ6IDc4LCA4NSwgOTAsIDg4ICAKPiAyLiDFoXR1ZGVudDogOTIsIDgxLCA3NywgOTUgIAo+IDMuIMWhdHVkZW50OiA4NSwgODksIDkxLCA4NyAgCj4KPiBaaXN0aXRlIHByaWVtZXJuw6kgc2vDs3JlIGthxb5kw6lobyDFoXR1ZGVudGEgKHBvIHJpYWRrb2NoKSBhIHByaWVtZXJuw6kgaG9kbm90ZW5pZSB6IGthxb5kw6lobyB0ZXN0dSAocG8gc3TEunBjb2NoKS4KCmBgYHtyfQpncmFkZXMgPC0gbWF0cml4KGMoNzgsODUsOTAsODgsIDkyLDgxLDc3LDk1LCA4NSw4OSw5MSw4NyksIG5yb3cgPSAzLCBieXJvdyA9IFRSVUUpCmdyYWRlcwpyb3dNZWFucyhncmFkZXMpCmNvbE1lYW5zKGdyYWRlcykKYGBgCgotLS0KCiMjIPCfp6kgTWFsw6kgY3ZpxI1lbmllIDQKCj4gVnl0dm9ydGUgbWF0aWN1IGBBYCAoM3gzKSBzIGhvZG5vdGFtaSAyLi4xMCBwbyByaWFka29jaCBhIHNwb8SNw610YWp0ZToKPiAtIGRldGVybWluYW50IG1hdGljZSwgIAo+IC0gdHJhbnNwb3rDrWNpdSwgIAo+IC0gc8O6xI1pbiBcKCBBXlQgQSBcKS4KCmBgYHtyfQpBIDwtIG1hdHJpeCgyOjEwLCBucm93ID0gMywgYnlyb3cgPSBUUlVFKQpkZXQoQSkKdChBKQp0KEEpICUqJSBBCmBgYAoKLS0tCgojIyDwn6epIE1hbMOpIGN2acSNZW5pZSA1Cgo+IFZ5dHZvcnRlIG1hdGljdSBgQmAgcm96bWVydSA0eDQgcyBob2Rub3RhbWkgb2QgMTAgZG8gMjUgcG8gc3TEunBjb2NoLiAgCj4gWmlzdGl0ZSBzw7rEjWV0IHbFoWV0a8O9Y2ggaG9kbsO0dCB2w6TEjcWhw61jaCBha28gMTggYSBwb8SNZXQgcHJ2a292IG1lbsWhw61jaCBha28gMTUuCgpgYGB7cn0KQiA8LSBtYXRyaXgoMTA6MjUsIG5yb3cgPSA0KQpzdW0oQltCID4gMThdKQpzdW0oQiA8IDE1KQpgYGAK