Numerické vektory

Generovanie vektorov

v1 <- c(4,7,10,13)
v2 <- 10:1                 
v3 <- seq(from = 15, to = 20, by = 0.50) 
v4 <- rep(4, times = 3)   
v5 <- runif(2)            
v6 <- rnorm(5)            
v1; v2; v3; v4; v5; v6
[1]  4  7 10 13
 [1] 10  9  8  7  6  5  4  3  2  1
 [1] 15.0 15.5 16.0 16.5 17.0 17.5 18.0 18.5 19.0 19.5 20.0
[1] 4 4 4
[1] 0.1165475 0.3837036
[1]  0.5678121 -0.8632417  0.2897643 -0.1232291  0.8474662

Aritmetické operácie s vektormi

v <- c(20, 22, 24, 26)
v + 5           
[1] 25 27 29 31
v * 2            
[1] 40 44 48 52
(v + 4) / 2
[1] 12 13 14 15
exp(v)           
[1]    485165195   3584912846  26489122130 195729609429
sum(c(5,6,7),c(2,2,2))          
[1] 24
crossprod(c(5,6,7),c(2,2,2))   
     [,1]
[1,]   36
c(5,6,7)*c(2,2,2)               
[1] 10 12 14

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

length(c(6,7))
[1] 2
length(v5)            
[1] 2
c(6,7) + v5    
[1] 6.116548 7.383704

Indexovanie a výber niektorych prvkov vektora

x <- c(7, 81, 4, 3, 55, 0, 2, 23)
x[2]           
[1] 81
x[5:8]         
[1] 55  0  2 23
x[-8]          
[1]  7 81  4  3 55  0  2
x[x < 15]      
[1] 7 4 3 0 2
which(x > 30)  
[1] 2 5

Práca s chýbajúcimi hodnotami

y <- c(6, NA, 9, NA, 15)
is.na(y)
[1] FALSE  TRUE FALSE  TRUE FALSE
mean(y)                
[1] NA
mean(y, na.rm = TRUE)   
[1] 10

Základné štatistiky a usporiadanie prvkov vektora podľa veľkosti

z <- c(50, 5, 1, 81, 1)
mean(z)                 
[1] 27.6
sd(z)                 
[1] 36.32905
max(z)                  
[1] 81
summary(z)             
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
    1.0     1.0     5.0    27.6    50.0    81.0 
sort(z)                 
[1]  1  1  5 50 81
sort(z, decreasing = TRUE)  
[1] 81 50  5  1  1

Malé cvičenie

Vytvorte vektor w s číslami 1..15 a vypočítajte sumu všetkých párnych čísel.

w <- 1:15
sum(w[w %% 2 == 0])
[1] 56

Triedenie vektora (vzostupne a zostupne)


v3 <- c(45, 12, 78, 34, 5)

sort(v3)                       # vzostupne
[1]  5 12 34 45 78
sort(v3, decreasing = TRUE)    # zostupne
[1] 78 45 34 12  5

Matice

Vytvorenie matíc

m <- matrix(1:9, nrow = 3, ncol = 3)           
m_byrow <- matrix(1:9, nrow = 3, byrow = TRUE)  
m; m_byrow
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9

Rozmery matice

dim(m)                  
[1] 3 3
m
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9

Adresovanie prvkov matice

m[2, 3]      
[1] 8
m[ , 1]      
[1] 1 2 3
m[1, ]       
[1] 1 4 7
m[3:1, 2:1]  
     [,1] [,2]
[1,]    6    3
[2,]    5    2
[3,]    4    1

Maticové operácie

A <- matrix(c(5,10,11,2), nrow = 2)
B <- matrix(c(34,1,22,2), nrow = 2)

A + B       
     [,1] [,2]
[1,]   39   33
[2,]   11    4
A * B       
     [,1] [,2]
[1,]  170  242
[2,]   10    4
A %*% B      
     [,1] [,2]
[1,]  181  132
[2,]  342  224
t(A)         
     [,1] [,2]
[1,]    5   10
[2,]   11    2
det(A)       
[1] -100
solve(A)    
      [,1]  [,2]
[1,] -0.02  0.11
[2,]  0.10 -0.05

Zlučovanie vektorov do matíc

C <- cbind(1:4, 5:6)  
D <- rbind(2:3, 4:7)  
C; D
     [,1] [,2]
[1,]    1    5
[2,]    2    6
[3,]    3    5
[4,]    4    6
     [,1] [,2] [,3] [,4]
[1,]    2    3    2    3
[2,]    4    5    6    7

Vypočítanie zvolenej štatistiky po riadkoch (stĺpcoch) matice

M <- matrix(1:15, nrow = 5)
M
     [,1] [,2] [,3]
[1,]    1    6   11
[2,]    2    7   12
[3,]    3    8   13
[4,]    4    9   14
[5,]    5   10   15
apply(M, 2, sum)   
[1] 15 40 65
apply(M, 1, mean)  
[1]  6  7  8  9 10

Malé cvičenie

Vytvorte maticu 6x6 s hodnotami po riadkoch 1..36, vypočítajte stĺpcové sumy a súčin matíc \(M^t M\).

M2 <- matrix(1:36, nrow = 6, byrow = TRUE)
colSums(M2)
[1]  96 102 108 114 120 126
t(M2) %*% M2
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,] 2166 2262 2358 2454 2550 2646
[2,] 2262 2364 2466 2568 2670 2772
[3,] 2358 2466 2574 2682 2790 2898
[4,] 2454 2568 2682 2796 2910 3024
[5,] 2550 2670 2790 2910 3030 3150
[6,] 2646 2772 2898 3024 3150 3276

Premenovanie riadkov a stĺpcov

m <- matrix(1:9, nrow = 3, ncol = 3)
rownames(m) <- c("1.riadok","2.riadok","3.riadok")
colnames(m) <- c("1.stĺpec","2.stĺpec","3.stĺpec")
m

LS0tCnRpdGxlOiAiVmVrdG9yeSBhIE1hdGljZSIKYXV0aG9yOiAiTW9uaWthIFN6xbFjc292w6EgIDxicj4iCmRhdGU6ICJPa3TDs2JlciAyMDI1IgpvdXRwdXQ6IAogIGh0bWxfbm90ZWJvb2s6CiAgICB0b2M6IHRydWUKICAgIHRvY19mbG9hdDogdHJ1ZQogICAgdGhlbWU6IGNvc21vCiAgICBoaWdobGlnaHQ6IGhhZGRvY2sKZWRpdG9yX29wdGlvbnM6IAogIG1hcmtkb3duOiAKICAgIHdyYXA6IDcyCi0tLQojIE51bWVyaWNrw6kgdmVrdG9yeQoKIyMgR2VuZXJvdmFuaWUgdmVrdG9yb3YKCmBgYHtyfQp2MSA8LSBjKDQsNywxMCwxMykKdjIgPC0gMTA6MSAgICAgICAgICAgICAgICAgCnYzIDwtIHNlcShmcm9tID0gMTUsIHRvID0gMjAsIGJ5ID0gMC41MCkgCnY0IDwtIHJlcCg0LCB0aW1lcyA9IDMpICAgCnY1IDwtIHJ1bmlmKDIpICAgICAgICAgICAgCnY2IDwtIHJub3JtKDUpICAgICAgICAgICAgCnYxOyB2MjsgdjM7IHY0OyB2NTsgdjYKYGBgCgojIyBBcml0bWV0aWNrw6kgb3BlcsOhY2llIHMgdmVrdG9ybWkKCmBgYHtyfQp2IDwtIGMoMjAsIDIyLCAyNCwgMjYpCnYgKyA1ICAgICAgICAgICAKdiAqIDIgICAgICAgICAgICAKKHYgKyA0KSAvIDIKZXhwKHYpICAgICAgICAgICAKc3VtKGMoNSw2LDcpLGMoMiwyLDIpKSAgICAgICAgICAKY3Jvc3Nwcm9kKGMoNSw2LDcpLGMoMiwyLDIpKSAgIApjKDUsNiw3KSpjKDIsMiwyKSAgICAgICAgICAgICAgIApgYGAKCiMjIE1hdGVtYXRpY2vDqSBvcGVyw6FjaWUgcyAyIHZla3Rvcm1pIHJvdm5ha8OpaG8gcm96bWVydQoKYGBge3J9Cmxlbmd0aChjKDYsNykpCmxlbmd0aCh2NSkgICAgICAgICAgICAKYyg2LDcpICsgdjUgICAgCmBgYAoKIyMgSW5kZXhvdmFuaWUgYSB2w71iZXIgbmlla3RvcnljaCBwcnZrb3YgdmVrdG9yYQoKYGBge3J9CnggPC0gYyg3LCA4MSwgNCwgMywgNTUsIDAsIDIsIDIzKQp4WzJdICAgICAgICAgICAKeFs1OjhdICAgICAgICAgCnhbLThdICAgICAgICAgIAp4W3ggPCAxNV0gICAgICAKd2hpY2goeCA+IDMwKSAgCmBgYAoKIyMgUHLDoWNhIHMgY2jDvWJhasO6Y2ltaSBob2Rub3RhbWkKCmBgYHtyfQp5IDwtIGMoNiwgTkEsIDksIE5BLCAxNSkKaXMubmEoeSkKbWVhbih5KSAgICAgICAgICAgICAgICAKbWVhbih5LCBuYS5ybSA9IFRSVUUpICAgCmBgYAoKIyMgWsOha2xhZG7DqSDFoXRhdGlzdGlreSBhIHVzcG9yaWFkYW5pZSBwcnZrb3YgdmVrdG9yYSBwb2TEvmEgdmXEvmtvc3RpCgpgYGB7cn0KeiA8LSBjKDUwLCA1LCAxLCA4MSwgMSkKbWVhbih6KSAgICAgICAgICAgICAgICAgCnNkKHopICAgICAgICAgICAgICAgICAKbWF4KHopICAgICAgICAgICAgICAgICAgCnN1bW1hcnkoeikgICAgICAgICAgICAgCnNvcnQoeikgICAgICAgICAgICAgICAgIApzb3J0KHosIGRlY3JlYXNpbmcgPSBUUlVFKSAgCmBgYAoKIyMgTWFsw6kgY3ZpxI1lbmllCj4gVnl0dm9ydGUgdmVrdG9yIGB3YCBzIMSNw61zbGFtaSAxLi4xNSBhIHZ5cG/EjcOtdGFqdGUgc3VtdSB2xaFldGvDvWNoIHDDoXJueWNoIMSNw61zZWwuCgpgYGB7cn0KdyA8LSAxOjE1CnN1bSh3W3cgJSUgMiA9PSAwXSkKYGBgCgo+VHJpZWRlbmllIHZla3RvcmEgKHZ6b3N0dXBuZSBhIHpvc3R1cG5lKQoKYGBge3J9Cgp2MyA8LSBjKDQ1LCAxMiwgNzgsIDM0LCA1KQoKc29ydCh2MykgICAgICAgICAgICAgICAgICAgICAgICMgdnpvc3R1cG5lCnNvcnQodjMsIGRlY3JlYXNpbmcgPSBUUlVFKSAgICAjIHpvc3R1cG5lCmBgYAotLS0KCiMgTWF0aWNlCgojIyBWeXR2b3JlbmllIG1hdMOtYwoKYGBge3J9Cm0gPC0gbWF0cml4KDE6OSwgbnJvdyA9IDMsIG5jb2wgPSAzKSAgICAgICAgICAgCm1fYnlyb3cgPC0gbWF0cml4KDE6OSwgbnJvdyA9IDMsIGJ5cm93ID0gVFJVRSkgIAptOyBtX2J5cm93CmBgYAoKIyMgUm96bWVyeSBtYXRpY2UKCmBgYHtyfQpkaW0obSkgICAgICAgICAgICAgICAgICAKbQpgYGAKCiMjIEFkcmVzb3ZhbmllIHBydmtvdiBtYXRpY2UKCmBgYHtyfQptWzIsIDNdICAgICAgCm1bICwgMV0gICAgICAKbVsxLCBdICAgICAgIAptWzM6MSwgMjoxXSAgCmBgYAoKIyMgTWF0aWNvdsOpIG9wZXLDoWNpZQoKYGBge3J9CkEgPC0gbWF0cml4KGMoNSwxMCwxMSwyKSwgbnJvdyA9IDIpCkIgPC0gbWF0cml4KGMoMzQsMSwyMiwyKSwgbnJvdyA9IDIpCgpBICsgQiAgICAgICAKQSAqIEIgICAgICAgCkEgJSolIEIgICAgICAKdChBKSAgICAgICAgIApkZXQoQSkgICAgICAgCnNvbHZlKEEpICAgIApgYGAKCiMjIFpsdcSNb3ZhbmllIHZla3Rvcm92IGRvIG1hdMOtYyAKCmBgYHtyfQpDIDwtIGNiaW5kKDE6NCwgNTo2KSAgCkQgPC0gcmJpbmQoMjozLCA0OjcpICAKQzsgRApgYGAKCiMjIFZ5cG/EjcOtdGFuaWUgenZvbGVuZWogxaF0YXRpc3Rpa3kgcG8gcmlhZGtvY2ggKHN0xLpwY29jaCkgbWF0aWNlCgpgYGB7cn0KTSA8LSBtYXRyaXgoMToxNSwgbnJvdyA9IDUpCk0KYXBwbHkoTSwgMiwgc3VtKSAgIAphcHBseShNLCAxLCBtZWFuKSAgCmBgYAoKIyMgTWFsw6kgY3ZpxI1lbmllCgo+IFZ5dHZvcnRlIG1hdGljdSA2eDYgcyBob2Rub3RhbWkgcG8gcmlhZGtvY2ggMS4uMzYsIHZ5cG/EjcOtdGFqdGUgc3TEunBjb3bDqSBzdW15IGEgc8O6xI1pbiBtYXTDrWMgXChNXnQgTVwpLgoKYGBge3J9Ck0yIDwtIG1hdHJpeCgxOjM2LCBucm93ID0gNiwgYnlyb3cgPSBUUlVFKQpjb2xTdW1zKE0yKQp0KE0yKSAlKiUgTTIKYGBgCgo+IFByZW1lbm92YW5pZSByaWFka292IGEgc3TEunBjb3YKCmBgYHtyfQptIDwtIG1hdHJpeCgxOjksIG5yb3cgPSAzLCBuY29sID0gMykKcm93bmFtZXMobSkgPC0gYygiMS5yaWFkb2siLCIyLnJpYWRvayIsIjMucmlhZG9rIikKY29sbmFtZXMobSkgPC0gYygiMS5zdMS6cGVjIiwiMi5zdMS6cGVjIiwiMy5zdMS6cGVjIikKbQpgYGAKCi0tLQoKCgoKCgo=