Numerické vektory
Generovanie vektorov
v1 <- c(5, 10, 15, 20)
v2 <- 10:15
v3 <- seq(from = 2, to = 3, by = 0.20)
v4 <- rep(7, times = 4)
v5 <- runif(4)
v6 <- rnorm(3)
v1; v2; v3; v4; v5
[1] 5 10 15 20
[1] 10 11 12 13 14 15
[1] 2.0 2.2 2.4 2.6 2.8 3.0
[1] 7 7 7 7
[1] 0.3474144 0.9441190 0.8226724 0.9760144
Aritmetické operácie s vektormi
v <- c(5, 6, 7, 8)
v + 12
[1] 17 18 19 20
[1] 20 24 28 32
[1] 1.250 1.375 1.500 1.625
[1] 148.4132 403.4288 1096.6332 2980.9580
[1] 21
crossprod(c(2,4,6),c(3,3,3))
[,1]
[1,] 36
[1] 6 12 18
Matematické operácie s 2 vektormi rovnakého rozmeru
[1] 4
[1] 4
[1] 7.347414 8.944119 12.822672 16.976014
Indexovanie a výber niektorych prvkov vektora
x <- c(6, 11, 4, 19, 8, 1, 22)
x[2] # indexovanie - novy jedno-prvkovy vektor - prvy prvok vektora x
[1] 11
x[4:6] # novy vektor s druhym az stvrtym prvkom vektora x
[1] 19 8 1
x[-2] # novy vektor - vsetky prvky vektora x okrem prvého
[1] 6 4 19 8 1 22
x[x > 15] # novy vektor definovany prvkami x vacsimi ako 10
[1] 19 22
which(x > 20) # ktore prvky zodpovedaju podmienke vacsieho ako 10?
[1] 7
Práca s chýbajúcimi hodnotami
y <- c(9, NA, 38, NA, 56)
is.na(y)
[1] FALSE TRUE FALSE TRUE FALSE
[1] NA
mean(y, na.rm = TRUE) # remove NAs
[1] 34.33333
Základné štatistiky a usporiadanie prvkov vektora podľa
veľkosti
z <- c(13, 4, 5, 9, 1)
mean(z) # priemerna hodnota
[1] 6.4
sd(z) # standardna odchylka
[1] 4.669047
max(z) # maximalna hodnota
[1] 13
summary(z) # rychly prehlad zakladnych statistik o vektore
Min. 1st Qu. Median Mean 3rd Qu. Max.
1.0 4.0 5.0 6.4 9.0 13.0
sort(z) # rastuce usporiadanie
[1] 1 4 5 9 13
sort(z, decreasing = TRUE) # klesajuce
[1] 13 9 5 4 1
Malé cvičenie
Vytvorte vektor w
s číslami 240..850 a vypočítajte sumu
všetkých párnych čísel.
w <- 240:850
sum(w[w %% 4 == 0])
[1] 83232
Matice
Vytvorenie matíc
m <- matrix(1:8, nrow = 2, ncol = 4)
m_byrow <- matrix(1:8, nrow = 2, byrow = TRUE)
m; m_byrow
[,1] [,2] [,3] [,4]
[1,] 1 3 5 7
[2,] 2 4 6 8
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
Rozmery matice
[1] 2 4
[,1] [,2] [,3] [,4]
[1,] 1 3 5 7
[2,] 2 4 6 8
Adresovanie prvkov matice
m[1, 4] # riadok 1, stlpec 2
[1] 7
m[ , 4] # vsetky prvky v tretom stlpci - vysledok matica 3x1
[1] 7 8
m[2, ] # vsetky prvky v druhom riadku - vysledok matica 1*3
[1] 2 4 6 8
m[2:1, 3:4] # podmatica tvorena riadkami 1, 2 a stlpcami 2, 3
[,1] [,2]
[1,] 6 8
[2,] 5 7
Maticové operácie
A <- matrix(c(11,22,33,44), nrow = 2)
B <- matrix(c(55,66,77,88), nrow = 2)
A + B # scitanie matic
[,1] [,2]
[1,] 66 110
[2,] 88 132
A * B # Hadamard product - nasobenie po zodpovedajucich prvkoch
[,1] [,2]
[1,] 605 2541
[2,] 1452 3872
A %*% B # nasobenie matic
[,1] [,2]
[1,] 2783 3751
[2,] 4114 5566
t(A) # transpozicia matice A - vymena riadkov a stlpcov
[,1] [,2]
[1,] 11 22
[2,] 33 44
det(A) # determinant matice
[1] -242
solve(A) # inverzia matice (ak je matica regularna - teda inverzia sa da spocitat)
[,1] [,2]
[1,] -0.18181818 0.13636364
[2,] 0.09090909 -0.04545455
Zlučovanie vektorov do matíc
C <- cbind(1:2, 3:4) # - po stlpcoch
D <- rbind(1:2, 3:4) # - po riadkoch
C; D
[,1] [,2]
[1,] 1 3
[2,] 2 4
[,1] [,2]
[1,] 1 2
[2,] 3 4
Vypočítanie zvolenej štatistiky po riadkoch (stĺpcoch) matice
M <- matrix(1:8, nrow = 2)
M
[,1] [,2] [,3] [,4]
[1,] 1 3 5 7
[2,] 2 4 6 8
[1] 16 20
[1] 1.5 3.5 5.5 7.5
Malé cvičenie
Vytvorte maticu 4x4 s hodnotami po riadkoch 101..116, vypočítajte
stĺpcové sumy a súčin matíc \(M^t
M\).
M2 <- matrix(101:116, nrow = 4, byrow = TRUE)
colSums(M2)
[1] 428 432 436 440
[,1] [,2] [,3] [,4]
[1,] 45876 46304 46732 47160
[2,] 46304 46736 47168 47600
[3,] 46732 47168 47604 48040
[4,] 47160 47600 48040 48480
LS0tCnRpdGxlOiAiWsOha2xhZG7DqSBvcGVyw6FjaWUgdiBSIgphdXRob3I6ICJWZXJvbmlrYSBSaXpzbnlvdnN6a8OhICA8YnI+IgpkYXRlOiAiT2t0w7NiZXIgMjAyNSIKb3V0cHV0OiAKICBodG1sX25vdGVib29rOgogICAgdG9jOiB0cnVlCiAgICB0b2NfZmxvYXQ6IHRydWUKICAgIHRoZW1lOiBjb3NtbwogICAgaGlnaGxpZ2h0OiBrYXRlCmVkaXRvcl9vcHRpb25zOiAKICBtYXJrZG93bjogCiAgICB3cmFwOiA3MgotLS0KIyBOdW1lcmlja8OpIHZla3RvcnkKCiMjIEdlbmVyb3ZhbmllIHZla3Rvcm92CgpgYGB7cn0KdjEgPC0gYyg1LCAxMCwgMTUsIDIwKQp2MiA8LSAxMDoxNSAgICAgICAgICAgICAKdjMgPC0gc2VxKGZyb20gPSAyLCB0byA9IDMsIGJ5ID0gMC4yMCkgIAp2NCA8LSByZXAoNywgdGltZXMgPSA0KSAgICAKdjUgPC0gcnVuaWYoNCkgICAgICAgICAgICAgCnY2IDwtIHJub3JtKDMpICAgICAgICAgICAgCnYxOyB2MjsgdjM7IHY0OyB2NQpgYGAKCiMjIEFyaXRtZXRpY2vDqSBvcGVyw6FjaWUgcyB2ZWt0b3JtaQoKYGBge3J9CnYgPC0gYyg1LCA2LCA3LCA4KQp2ICsgMTIgICAgICAgICAgIAp2ICogNCAgICAgICAgICAgIAoodiArIDUpIC8gOApleHAodikgICAgICAgICAgIApzdW0oYygyLDQsNiksYygzLDMsMykpICAgICAgICAgIApjcm9zc3Byb2QoYygyLDQsNiksYygzLDMsMykpICAgIApjKDIsNCw2KSpjKDMsMywzKSAgICAgICAgICAgICAgIApgYGAKCiMjIE1hdGVtYXRpY2vDqSBvcGVyw6FjaWUgcyAyIHZla3Rvcm1pIHJvdm5ha8OpaG8gcm96bWVydQoKYGBge3J9Cmxlbmd0aChjKDcsOCwxMiwxNikpCmxlbmd0aCh2NSkgICAgICAgICAgICAKYyg3LDgsMTIsMTYpICsgdjUgICAgIApgYGAKCiMjIEluZGV4b3ZhbmllIGEgdsO9YmVyIG5pZWt0b3J5Y2ggcHJ2a292IHZla3RvcmEKCmBgYHtyfQp4IDwtIGMoNiwgMTEsIDQsIDE5LCA4LCAxLCAyMikKeFsyXSAgICAgICAgICAgCnhbNDo2XSAgICAgICAgIAp4Wy0yXSAgICAgICAgICAKeFt4ID4gMTVdICAgICAgCndoaWNoKHggPiAyMCkgIApgYGAKCiMjIFByw6FjYSBzIGNow71iYWrDumNpbWkgaG9kbm90YW1pCgpgYGB7cn0KeSA8LSBjKDksIE5BLCAzOCwgTkEsIDU2KQppcy5uYSh5KQptZWFuKHkpICAgICAgICAgICAgICAgICAKbWVhbih5LCBuYS5ybSA9IFRSVUUpICAgCmBgYAoKIyMgWsOha2xhZG7DqSDFoXRhdGlzdGlreSBhIHVzcG9yaWFkYW5pZSBwcnZrb3YgdmVrdG9yYSBwb2TEvmEgdmXEvmtvc3RpCgpgYGB7cn0KeiA8LSBjKDEzLCA0LCA1LCA5LCAxKQptZWFuKHopICAgICAgICAgICAgICAgICAKc2QoeikgICAgICAgICAgICAgICAgICAKbWF4KHopICAgICAgICAgICAgICAgICAgCnN1bW1hcnkoeikgICAgICAgICAgICAgIApzb3J0KHopICAgICAgICAgICAgICAgICAgCnNvcnQoeiwgZGVjcmVhc2luZyA9IFRSVUUpICAKYGBgCgojIyBNYWzDqSBjdmnEjWVuaWUKPiBWeXR2b3J0ZSB2ZWt0b3IgYHdgIHMgxI3DrXNsYW1pIDI0MC4uODUwIGEgdnlwb8SNw610YWp0ZSBzdW11IHbFoWV0a8O9Y2ggcMOhcm55Y2ggxI3DrXNlbC4KCmBgYHtyfQp3IDwtIDI0MDo4NTAKc3VtKHdbdyAlJSA0ID09IDBdKQpgYGAKCi0tLQoKIyBNYXRpY2UKCiMjIFZ5dHZvcmVuaWUgbWF0w61jCgpgYGB7cn0KbSA8LSBtYXRyaXgoMTo4LCBucm93ID0gMiwgbmNvbCA9IDQpICAgICAgICAgICAgCm1fYnlyb3cgPC0gbWF0cml4KDE6OCwgbnJvdyA9IDIsIGJ5cm93ID0gVFJVRSkgIAptOyBtX2J5cm93CmBgYAoKIyMgUm96bWVyeSBtYXRpY2UKCmBgYHtyfQpkaW0obSkgICAgICAgICAgICAgICAgICAgCm0KYGBgCgojIyBBZHJlc292YW5pZSBwcnZrb3YgbWF0aWNlCgpgYGB7cn0KbVsxLCA0XSAgICAgICMgcmlhZG9rIDEsIHN0bHBlYyAyCm1bICwgNF0gICAgICAjIHZzZXRreSBwcnZreSB2IHRyZXRvbSBzdGxwY2kgLSB2eXNsZWRvayBtYXRpY2EgM3gxCm1bMiwgXSAgICAgICAjIHZzZXRreSBwcnZreSB2IGRydWhvbSByaWFka3UgLSB2eXNsZWRvayBtYXRpY2EgMSozCm1bMjoxLCAzOjRdICAjIHBvZG1hdGljYSB0dm9yZW5hIHJpYWRrYW1pIDEsIDIgYSBzdGxwY2FtaSAyLCAzCmBgYAoKIyMgTWF0aWNvdsOpIG9wZXLDoWNpZQoKYGBge3J9CkEgPC0gbWF0cml4KGMoMTEsMjIsMzMsNDQpLCBucm93ID0gMikKQiA8LSBtYXRyaXgoYyg1NSw2Niw3Nyw4OCksIG5yb3cgPSAyKQoKQSArIEIgICAgICAgIApBICogQiAgICAgICAgCkEgJSolIEIgICAgICAKdChBKSAgICAgICAgIApkZXQoQSkgICAgICAgCnNvbHZlKEEpICAgICAKYGBgCgojIyBabHXEjW92YW5pZSB2ZWt0b3JvdiBkbyBtYXTDrWMgCgpgYGB7cn0KQyA8LSBjYmluZCgxOjIsIDM6NCkgICAKRCA8LSByYmluZCgxOjIsIDM6NCkgICAgCkM7IEQKYGBgCgojIyBWeXBvxI3DrXRhbmllIHp2b2xlbmVqIMWhdGF0aXN0aWt5IHBvIHJpYWRrb2NoIChzdMS6cGNvY2gpIG1hdGljZQoKYGBge3J9Ck0gPC0gbWF0cml4KDE6OCwgbnJvdyA9IDIpCk0KYXBwbHkoTSwgMSwgc3VtKSAgIAphcHBseShNLCAyLCBtZWFuKSAgCmBgYAoKIyMgTWFsw6kgY3ZpxI1lbmllCgo+IFZ5dHZvcnRlIG1hdGljdSA0eDQgcyBob2Rub3RhbWkgcG8gcmlhZGtvY2ggMTAxLi4xMTYsIHZ5cG/EjcOtdGFqdGUgc3TEunBjb3bDqSBzdW15IGEgc8O6xI1pbiBtYXTDrWMgXChNXnQgTVwpLgoKYGBge3J9Ck0yIDwtIG1hdHJpeCgxMDE6MTE2LCBucm93ID0gNCwgYnlyb3cgPSBUUlVFKQpjb2xTdW1zKE0yKQp0KE0yKSAlKiUgTTIKYGBgCgotLS0K