Numerické vektory
Generovanie vektorov
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; v5
[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.9604600 0.8140716 0.2521879 0.4292501 0.5217268
Aritmetické operácie s vektormi
v <- c(1, 2, 3, 4)
v + 10 # kazdy prvok vektora zvacsime o 10
[1] 11 12 13 14
v * 2 # kazdy prvok vektora prenasobime 2
[1] 2 4 6 8
[1] 1.0 1.5 2.0 2.5
exp(v) # exponencialna funkcia z kazdeho prvku vektora
[1] 2.718282 7.389056 20.085537 54.598150
Quitting from III.-zadanie.Rmd:34-43 [unnamed-chunk-2]
sum(c(1,2,3),c(1,1,1)) # skalarny sucin - vysledok je skalar
[1] 9
crossprod(c(1,2,3),c(1,1,1)) # skalarny sucin - vysledok je matica 1x1
[,1]
[1,] 6
c(1,2,3)*c(1,1,1) # Hadamardov sucin (sucin zodpovedajucich prvkov vektora)
[1] 1 2 3
Matematické operácie s 2 vektormi rovnakého rozmeru
[1] 5
length(v5) #vektor v5 je definovany vyssie
[1] 5
c(1,2,3,4,5) + v5 # pozor, oba vektory musia mat rovnaky rozmer
[1] 1.960460 2.814072 3.252188 4.429250 5.521727
Indexovanie a výber niektorych prvkov vektora
x <- c(5, 12, 3, 18, 7, 0, 21)
x[1] # indexovanie - novy jedno-prvkovy vektor - prvy prvok vektora x
[1] 5
x[2:4] # novy vektor s druhym az stvrtym prvkom vektora x
[1] 12 3 18
x[-1] # novy vektor - vsetky prvky vektora x okrem prvého
[1] 12 3 18 7 0 21
x[x > 10] # novy vektor definovany prvkami x vacsimi ako 10
[1] 12 18 21
which(x > 10) # ktore prvky zodpovedaju podmienke vacsieho ako 10?
[1] 2 4 7
Práca s chýbajúcimi hodnotami
y <- c(1, NA, 3, NA, 5)
is.na(y)
[1] FALSE TRUE FALSE TRUE FALSE
[1] NA
mean(y, na.rm = TRUE) # remove NAs
[1] 3
Základné štatistiky a usporiadanie prvkov vektora podľa
veľkosti
z <- c(10, 3, 5, 8, 2)
mean(z) # priemerna hodnota
[1] 5.6
sd(z) # standardna odchylka
[1] 3.361547
max(z) # maximalna hodnota
[1] 10
min(z) # minimálna hodnota DOPLNENÉ
[1] 2
summary(z) # rychly prehlad zakladnych statistik o vektore
Min. 1st Qu. Median Mean 3rd Qu. Max.
2.0 3.0 5.0 5.6 8.0 10.0
sort(z) # rastuce usporiadanie
[1] 2 3 5 8 10
sort(z, decreasing = TRUE) # klesajuce
[1] 10 8 5 3 2
Malé cvičenie
Vytvorte vektor w
s číslami 1..10 a vypočítajte sumu
všetkých párnych čísel.
w <- 1:10
sum(w[w %% 2 == 0])
[1] 30
Matice
Vytvorenie matíc
m <- matrix(1:10, nrow = 2, ncol = 5) # hodnoty sú zadavane po stlpcoch
m_byrow <- matrix(1:10, nrow = 2, byrow = TRUE) # hodnoty su zadavane po riadkoch
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
[1] 2 5
[,1] [,2] [,3] [,4] [,5]
[1,] 1 3 5 7 9
[2,] 2 4 6 8 10
Adresovanie prvkov matice
m[1, 2] # riadok 1, stlpec 2
[1] 3
m[ , 3] # vsetky prvky v tretom stlpci - vysledok matica 3x1
[1] 5 6
m[2, ] # vsetky prvky v druhom riadku - vysledok matica 1*3
[1] 2 4 6 8 10
m[1:2, 2:3] # podmatica tvorena riadkami 1, 2 a stlpcami 2, 3
[,1] [,2]
[1,] 3 5
[2,] 4 6
Maticové operácie
A <- matrix(c(1,2,3,4), nrow = 3)
B <- matrix(c(5,6,7,8), nrow = 3)
A + B # scitanie matic
A - B # odčítanie matíc DOPLNENÉ
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)
Zlučovanie vektorov do matíc
C <- cbind(1:5, 6:10) # - po stlpcoch
D <- rbind(1:5, 6:10) # - po riadkoch
C; D
Vypočítanie zvolenej štatistiky po riadkoch (stĺpcoch) matice
M <- matrix(1:9, nrow = 3)
M
apply(M, 1, sum) # suma po riadkoch
apply(M, 2, mean) # priemery po stĺpcoch
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)
colSums(M2)
t(M2) %*% M2
Vytvorte maticu 3x3 s hodnotami po riadkoch 1..10, vypočítajte
stĺpcové sumy a súčin matíc \(M^t M\).
DOPLNENÉ
M2 <- matrix(1:10, nrow = 4, byrow = TRUE)
colSums(M2)
t(M2) %*% M2
DOPLNENÉ
zlaté <- c(3,5,1)
strieborné <- c(1,1,4)
bronzové <- c(2,0,1)
# Vytvorenie tabuľky vďaka data.frame s medailami ako riadky a rokmi ako stĺpce
medaily <- data.frame(
row.names = c("Zlaté", "Strieborné", "Bronzové"),
"2022" = c(zlaté[1], strieborné[1], bronzové[1]),
"2023" = c(zlaté[2], strieborné[2], bronzové[2]),
"2024" = c(zlaté[3], strieborné[3], bronzové[3])
)
medaily
medaily[,1] # ak chceme vypísať medaily za rok 2022
[1] 3 1 2
m <- medaily # pre urýchlenie práce používame skratky
summary(medaily) # rýchla deskriptívna štatistika
X2022 X2023 X2024
Min. :1.0 Min. :0.0 Min. :1.0
1st Qu.:1.5 1st Qu.:0.5 1st Qu.:1.0
Median :2.0 Median :1.0 Median :1.0
Mean :2.0 Mean :2.0 Mean :2.0
3rd Qu.:2.5 3rd Qu.:3.0 3rd Qu.:2.5
Max. :3.0 Max. :5.0 Max. :4.0
LS0tCnRpdGxlOiAiTWF0aWNlIGEgdmVrdG9yeSIKYXV0aG9yOiAiQmFyYm9yYSBLdWNow6FyaWtvdsOhICA8YnI+IChzIHZ5dcW+aXTDrW0gdmVyZWpuZSBkb3N0dXBuw71jaCBrw7Nkb3YpIgpkYXRlOiAiT2t0w7NiZXIgMjAyNSIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICB0b2M6IHRydWUKICAgIHRvY19mbG9hdDogdHJ1ZQogICAgdGhlbWU6IHVuaXRlZAogICAgaGlnaGxpZ2h0OiB0YW5nbwogIGh0bWxfZG9jdW1lbnQ6CiAgICB0b2M6IHRydWUKICAgIGRmX3ByaW50OiBwYWdlZAplZGl0b3Jfb3B0aW9uczoKICBtYXJrZG93bjoKICAgIHdyYXA6IDcyCi0tLQojIE51bWVyaWNrw6kgdmVrdG9yeQoKIyMgR2VuZXJvdmFuaWUgdmVrdG9yb3YKCmBgYHtyfQp2MSA8LSBjKDIsIDQsIDYsIDgpCnYyIDwtIDE6NSAgICAgICAgICAgICAgICAgICMgcG9zdHVwbm9zdCAxLDIsMyw0LDUKdjMgPC0gc2VxKGZyb20gPSAwLCB0byA9IDEsIGJ5ID0gMC4yNSkgICMgcG9zdHVwbm9zdCBzIGtyb2tvbSAwLjI1CnY0IDwtIHJlcCgzLCB0aW1lcyA9IDUpICAgICMgMywzLDMsMywzICAjIDUgY2xlbm5hIHBvc3R1cG5vc3QgdHJvamFrCnY1IDwtIHJ1bmlmKDUpICAgICAgICAgICAgICMgZ2VuZXJvdmFuaWUgcm92bm9tZXJuZSByb3pkZWxlbnljaCBwcmVtZW5ueWNoIHYgaW50ZXJ2YWxlIFswLDFdCnY2IDwtIHJub3JtKDUpICAgICAgICAgICAgICMgZ2VuZXJvdmFuaWUgbm9ybWFsbmUgcm96ZGVsZW55Y2ggcHJlbWVubnljaAp2MTsgdjI7IHYzOyB2NDsgdjUKYGBgCgojIyBBcml0bWV0aWNrw6kgb3BlcsOhY2llIHMgdmVrdG9ybWkKCmBgYHtyfQp2IDwtIGMoMSwgMiwgMywgNCkKdiArIDEwICAgICAgICAgICAjIGthemR5IHBydm9rIHZla3RvcmEgenZhY3NpbWUgbyAxMAp2ICogMiAgICAgICAgICAgICMga2F6ZHkgcHJ2b2sgdmVrdG9yYSBwcmVuYXNvYmltZSAyCih2ICsgMSkgLyAyCmV4cCh2KSAgICAgICAgICAgIyBleHBvbmVuY2lhbG5hIGZ1bmtjaWEgeiBrYXpkZWhvIHBydmt1IHZla3RvcmEKc3VtKGMoMSwyLDMpLGMoMSwxLDEpKSAgICAgICAgICAjIHNrYWxhcm55IHN1Y2luIC0gdnlzbGVkb2sgamUgc2thbGFyCmNyb3NzcHJvZChjKDEsMiwzKSxjKDEsMSwxKSkgICAgIyBza2FsYXJueSBzdWNpbiAtIHZ5c2xlZG9rIGplIG1hdGljYSAxeDEKYygxLDIsMykqYygxLDEsMSkgICAgICAgICAgICAgICAjIEhhZGFtYXJkb3Ygc3VjaW4gKHN1Y2luIHpvZHBvdmVkYWp1Y2ljaCBwcnZrb3YgdmVrdG9yYSkKYGBgCgojIyBNYXRlbWF0aWNrw6kgb3BlcsOhY2llIHMgMiB2ZWt0b3JtaSByb3ZuYWvDqWhvIHJvem1lcnUKCmBgYHtyfQpsZW5ndGgoYygxLDIsMyw0LDUpKQpsZW5ndGgodjUpICAgICAgICAgICAgI3Zla3RvciB2NSBqZSBkZWZpbm92YW55IHZ5c3NpZQpjKDEsMiwzLDQsNSkgKyB2NSAgICAgIyBwb3pvciwgb2JhIHZla3RvcnkgbXVzaWEgbWF0IHJvdm5ha3kgcm96bWVyCmBgYAoKIyMgSW5kZXhvdmFuaWUgYSB2w71iZXIgbmlla3RvcnljaCBwcnZrb3YgdmVrdG9yYQoKYGBge3J9CnggPC0gYyg1LCAxMiwgMywgMTgsIDcsIDAsIDIxKQp4WzFdICAgICAgICAgICAjIGluZGV4b3ZhbmllIC0gbm92eSBqZWRuby1wcnZrb3Z5IHZla3RvciAtIHBydnkgcHJ2b2sgdmVrdG9yYSB4CnhbMjo0XSAgICAgICAgICMgbm92eSB2ZWt0b3IgcyBkcnVoeW0gYXogc3R2cnR5bSBwcnZrb20gdmVrdG9yYSB4CnhbLTFdICAgICAgICAgICMgbm92eSB2ZWt0b3IgLSB2c2V0a3kgcHJ2a3kgdmVrdG9yYSB4IG9rcmVtIHBydsOpaG8KeFt4ID4gMTBdICAgICAgIyBub3Z5IHZla3RvciBkZWZpbm92YW55IHBydmthbWkgeCB2YWNzaW1pIGFrbyAxMAp3aGljaCh4ID4gMTApICAjIGt0b3JlIHBydmt5IHpvZHBvdmVkYWp1IHBvZG1pZW5rZSB2YWNzaWVobyBha28gMTA/CmBgYAoKIyMgUHLDoWNhIHMgY2jDvWJhasO6Y2ltaSBob2Rub3RhbWkKCmBgYHtyfQp5IDwtIGMoMSwgTkEsIDMsIE5BLCA1KQppcy5uYSh5KQptZWFuKHkpICAgICAgICAgICAgICAgICAjIE5BCm1lYW4oeSwgbmEucm0gPSBUUlVFKSAgICMgcmVtb3ZlIE5BcwpgYGAKCiMjIFrDoWtsYWRuw6kgxaF0YXRpc3Rpa3kgYSB1c3BvcmlhZGFuaWUgcHJ2a292IHZla3RvcmEgcG9kxL5hIHZlxL5rb3N0aQoKYGBge3J9CnogPC0gYygxMCwgMywgNSwgOCwgMikKbWVhbih6KSAgICAgICAgICAgICAgICAgIyBwcmllbWVybmEgaG9kbm90YQpzZCh6KSAgICAgICAgICAgICAgICAgICMgc3RhbmRhcmRuYSBvZGNoeWxrYQptYXgoeikgICAgICAgICAgICAgICAgICAjIG1heGltYWxuYSBob2Rub3RhCm1pbih6KSAgICAgICAgICAgICAgICAgICMgbWluaW3DoWxuYSBob2Rub3RhIERPUExORU7DiQpzdW1tYXJ5KHopICAgICAgICAgICAgICAjIHJ5Y2hseSBwcmVobGFkIHpha2xhZG55Y2ggc3RhdGlzdGlrIG8gdmVrdG9yZQpzb3J0KHopICAgICAgICAgICAgICAgICAjIHJhc3R1Y2UgdXNwb3JpYWRhbmllIApzb3J0KHosIGRlY3JlYXNpbmcgPSBUUlVFKSAgIyBrbGVzYWp1Y2UKYGBgCgojIyBNYWzDqSBjdmnEjWVuaWUKCj4gVnl0dm9ydGUgdmVrdG9yIGB3YCBzIMSNw61zbGFtaSAxLi4xMCBhIHZ5cG/EjcOtdGFqdGUgc3VtdSB2xaFldGvDvWNoIHDDoXJueWNoIMSNw61zZWwuCgpgYGB7cn0KdyA8LSAxOjEwCnN1bSh3W3cgJSUgMiA9PSAwXSkKYGBgCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiMgTWF0aWNlCgojIyBWeXR2b3JlbmllIG1hdMOtYwoKYGBge3J9Cm0gPC0gbWF0cml4KDE6MTAsIG5yb3cgPSAyLCBuY29sID0gNSkgICAgICAgICAgICAjIGhvZG5vdHkgc8O6IHphZGF2YW5lIHBvIHN0bHBjb2NoCm1fYnlyb3cgPC0gbWF0cml4KDE6MTAsIG5yb3cgPSAyLCBieXJvdyA9IFRSVUUpICAjIGhvZG5vdHkgc3UgemFkYXZhbmUgcG8gcmlhZGtvY2gKbTsgbV9ieXJvdwpgYGAKCiMjIFJvem1lcnkgbWF0aWNlCgpgYGB7cn0KZGltKG0pICAgICAgICAgICAgICAgICAgICMgKHJvd3MsIGNvbHMpCm0KYGBgCgojIyBBZHJlc292YW5pZSBwcnZrb3YgbWF0aWNlCgpgYGB7cn0KbVsxLCAyXSAgICAgICMgcmlhZG9rIDEsIHN0bHBlYyAyCm1bICwgM10gICAgICAjIHZzZXRreSBwcnZreSB2IHRyZXRvbSBzdGxwY2kgLSB2eXNsZWRvayBtYXRpY2EgM3gxCm1bMiwgXSAgICAgICAjIHZzZXRreSBwcnZreSB2IGRydWhvbSByaWFka3UgLSB2eXNsZWRvayBtYXRpY2EgMSozCm1bMToyLCAyOjNdICAjIHBvZG1hdGljYSB0dm9yZW5hIHJpYWRrYW1pIDEsIDIgYSBzdGxwY2FtaSAyLCAzCmBgYAoKIyMgTWF0aWNvdsOpIG9wZXLDoWNpZQoKYGBge3J9CkEgPC0gbWF0cml4KGMoMSwyLDMsNCksIG5yb3cgPSAzKQpCIDwtIG1hdHJpeChjKDUsNiw3LDgpLCBucm93ID0gMykKCkEgKyBCICAgICAgICAjIHNjaXRhbmllIG1hdGljCkEgLSBCICAgICAgICAjIG9kxI3DrXRhbmllIG1hdMOtYyBET1BMTkVOw4kKQSAqIEIgICAgICAgICMgSGFkYW1hcmQgcHJvZHVjdCAtIG5hc29iZW5pZSBwbyB6b2Rwb3ZlZGFqdWNpY2ggcHJ2a29jaApBICUlIEIgICAgICAjIG5hc29iZW5pZSBtYXRpYwp0KEEpICAgICAgICAgIyB0cmFuc3BvemljaWEgbWF0aWNlIEEgLSB2eW1lbmEgcmlhZGtvdiBhIHN0bHBjb3YKZGV0KEEpICAgICAgICMgZGV0ZXJtaW5hbnQgbWF0aWNlCnNvbHZlKEEpICAgICAjIGludmVyemlhIG1hdGljZSAoYWsgamUgbWF0aWNhIHJlZ3VsYXJuYSAtIHRlZGEgaW52ZXJ6aWEgc2EgZGEgc3BvY2l0YXQpCmBgYAoKIyMgWmx1xI1vdmFuaWUgdmVrdG9yb3YgZG8gbWF0w61jCgpgYGB7cn0KQyA8LSBjYmluZCgxOjUsIDY6MTApICAgIyAgLSBwbyBzdGxwY29jaCAKRCA8LSByYmluZCgxOjUsIDY6MTApICAgIyAgLSBwbyByaWFka29jaCAKQzsgRApgYGAKCiMjIFZ5cG/EjcOtdGFuaWUgenZvbGVuZWogxaF0YXRpc3Rpa3kgcG8gcmlhZGtvY2ggKHN0xLpwY29jaCkgbWF0aWNlCgpgYGB7cn0KTSA8LSBtYXRyaXgoMTo5LCBucm93ID0gMykKTQphcHBseShNLCAxLCBzdW0pICAgIyBzdW1hIHBvIHJpYWRrb2NoCmFwcGx5KE0sIDIsIG1lYW4pICAjIHByaWVtZXJ5IHBvIHN0xLpwY29jaApgYGAKCiMjIE1hbMOpIGN2acSNZW5pZQoKPiBWeXR2b3J0ZSBtYXRpY3UgNXg1IHMgaG9kbm90YW1pIHBvIHJpYWRrb2NoIDEuLjI1LCB2eXBvxI3DrXRhanRlIHN0xLpwY292w6kgc3VteSBhIHPDusSNaW4gbWF0w61jICRNXnQgTSQuCgpgYGB7cn0KTTIgPC0gbWF0cml4KDE6MjUsIG5yb3cgPSA1LCBieXJvdyA9IFRSVUUpCmNvbFN1bXMoTTIpCnQoTTIpICUqJSBNMgpgYGAKCj4gVnl0dm9ydGUgbWF0aWN1IDN4MyBzIGhvZG5vdGFtaSBwbyByaWFka29jaCAxLi4xMCwgdnlwb8SNw610YWp0ZSBzdMS6cGNvdsOpIHN1bXkgYSBzw7rEjWluIG1hdMOtYyAkTV50IE0kLiBET1BMTkVOw4kKCmBgYHtyfQpNMiA8LSBtYXRyaXgoMToxMCwgbnJvdyA9IDQsIGJ5cm93ID0gVFJVRSkKY29sU3VtcyhNMikKdChNMikgJSolIE0yCmBgYAoKIyBET1BMTkVOw4kKCmBgYHtyfQp6bGF0w6kgPC0gYygzLDUsMSkKc3RyaWVib3Juw6kgPC0gYygxLDEsNCkKYnJvbnpvdsOpIDwtIGMoMiwwLDEpCgojIFZ5dHZvcmVuaWUgdGFidcS+a3kgdsSPYWthIGRhdGEuZnJhbWUgcyBtZWRhaWxhbWkgYWtvIHJpYWRreSBhIHJva21pIGFrbyBzdMS6cGNlCm1lZGFpbHkgPC0gZGF0YS5mcmFtZSgKICByb3cubmFtZXMgPSBjKCJabGF0w6kiLCAiU3RyaWVib3Juw6kiLCAiQnJvbnpvdsOpIiksCiAgIjIwMjIiID0gYyh6bGF0w6lbMV0sIHN0cmllYm9ybsOpWzFdLCBicm9uem92w6lbMV0pLAogICIyMDIzIiA9IGMoemxhdMOpWzJdLCBzdHJpZWJvcm7DqVsyXSwgYnJvbnpvdsOpWzJdKSwKICAiMjAyNCIgPSBjKHpsYXTDqVszXSwgc3RyaWVib3Juw6lbM10sIGJyb256b3bDqVszXSkKKQptZWRhaWx5CmBgYAoKYGBge3J9Cm1lZGFpbHlbLDFdICAgICAgICMgYWsgY2hjZW1lIHZ5cMOtc2HFpSBtZWRhaWx5IHphIHJvayAyMDIyIAptIDwtIG1lZGFpbHkgICAgICMgcHJlIHVyw71jaGxlbmllIHByw6FjZSBwb3XFvsOtdmFtZSBza3JhdGt5CmBgYAoKYGBge3J9CnN1bW1hcnkobWVkYWlseSkgICAgICAgICMgcsO9Y2hsYSBkZXNrcmlwdMOtdm5hIMWhdGF0aXN0aWthCmBgYAoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCg==