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
v * 4            
[1] 20 24 28 32
(v + 5) / 8
[1] 1.250 1.375 1.500 1.625
exp(v)           
[1]  148.4132  403.4288 1096.6332 2980.9580
sum(c(2,4,6),c(3,3,3))          
[1] 21
crossprod(c(2,4,6),c(3,3,3))    
     [,1]
[1,]   36
c(2,4,6)*c(3,3,3)               
[1]  6 12 18

Matematické operácie s 2 vektormi rovnakého rozmeru

length(c(7,8,12,16))
[1] 4
length(v5)            
[1] 4
c(7,8,12,16) + v5     
[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
mean(y)                 # NA
[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

dim(m)                   
[1] 2 4
m
     [,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
apply(M, 1, sum)   
[1] 16 20
apply(M, 2, mean)  
[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
t(M2) %*% M2
      [,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