Numerické vektory

Generovanie vektorov

v1 <- c(1, 3, 7, 9)
v2 <- 1:6                 
v3 <- seq(from = 0, to = 4, by = 0.25)  
v4 <- rep(2, times = 6)    
v5 <- runif(7)             
v6 <- rnorm(4)            
v1; v2; v3; v4; v5
[1] 1 3 7 9
[1] 1 2 3 4 5 6
 [1] 0.00 0.25 0.50 0.75 1.00 1.25 1.50 1.75 2.00 2.25 2.50 2.75 3.00 3.25 3.50 3.75 4.00
[1] 2 2 2 2 2 2
[1] 0.39836832 0.08691421 0.69619160 0.23205830 0.02943422 0.42164100 0.06005022

Aritmetické operácie s vektormi

v <- c(5, 6, 7, 8)
v + 20           
[1] 25 26 27 28
v * 3           
[1] 15 18 21 24
(v + 3) / 2
[1] 4.0 4.5 5.0 5.5
exp(v)          
[1]  148.4132  403.4288 1096.6332 2980.9580
sum(c(4,5,6),c(2,2,2))         
[1] 21
crossprod(c(4,5,6),c(2,2,2))    
     [,1]
[1,]   30
c(4,5,6)*c(2,2,2)             
[1]  8 10 12

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

length(c(3,4,5,6,7,8,9))
[1] 7
length(v5)           
[1] 7
c(1,2,5,6,7,8,9) + v5   
[1] 1.398368 2.086914 5.696192 6.232058 7.029434 8.421641 9.060050

Indexovanie a výber niektorych prvkov vektora

x <- c(6, 10, 2, 17, 4, 1, 24)
x[2]          
[1] 10
x[4:6]        
[1] 17  4  1
x[-1]         
[1] 10  2 17  4  1 24
x[x > 10]      
[1] 17 24
which(x > 10)  
[1] 4 7

Práca s chýbajúcimi hodnotami

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

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

z <- c(16, 6, 3, 5, 9)
mean(z)                
[1] 7.8
sd(z)                 
[1] 5.069517
max(z)                  
[1] 16
summary(z)              
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
    3.0     5.0     6.0     7.8     9.0    16.0 
sort(z)                 
[1]  3  5  6  9 16
sort(z, decreasing = TRUE)  
[1] 16  9  6  5  3

Malé cvičenie

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

w <- 1:20
sum(w[w %% 2 == 0])
[1] 110
body <- c(45, 60, 75, 90, 55, 80)
body[body > 70]
[1] 75 90 80
 
mean(body)
[1] 67.5
min(body)
[1] 45
max(body)
[1] 90
 
all(body > 40)
[1] TRUE
 
a <- c(1, 2, 3)
b <- c(4, 5, 6)
a + b
[1] 5 7 9
a * b
[1]  4 10 18
 

Matice

Vytvorenie matíc

m <- matrix(1:16, nrow = 4, ncol = 4)           
m_byrow <- matrix(1:16, nrow = 4, byrow = TRUE) 
m; m_byrow
     [,1] [,2] [,3] [,4]
[1,]    1    5    9   13
[2,]    2    6   10   14
[3,]    3    7   11   15
[4,]    4    8   12   16
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    5    6    7    8
[3,]    9   10   11   12
[4,]   13   14   15   16

Rozmery matice

dim(m)                   
[1] 4 4
m
     [,1] [,2] [,3] [,4]
[1,]    1    5    9   13
[2,]    2    6   10   14
[3,]    3    7   11   15
[4,]    4    8   12   16

Adresovanie prvkov matice

m[3, 4]     
[1] 15
m[ , 4]      
[1] 13 14 15 16
m[2, ]       
[1]  2  6 10 14
m[3:4, 1:2]  
     [,1] [,2]
[1,]    3    7
[2,]    4    8

Maticové operácie

A <- matrix(c(3,5,7,9), nrow = 2)
B <- matrix(c(1,5,6,8), nrow = 2)
 
A + B        
     [,1] [,2]
[1,]    4   13
[2,]   10   17
A * B        
     [,1] [,2]
[1,]    3   42
[2,]   25   72
A %*% B      
     [,1] [,2]
[1,]   38   74
[2,]   50  102
t(A)        
     [,1] [,2]
[1,]    3    5
[2,]    7    9
det(A)       
[1] -8
solve(A)     
       [,1]   [,2]
[1,] -1.125  0.875
[2,]  0.625 -0.375

Zlučovanie vektorov do matíc

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

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

M <- matrix(1:16, nrow = 4)
M
     [,1] [,2] [,3] [,4]
[1,]    1    5    9   13
[2,]    2    6   10   14
[3,]    3    7   11   15
[4,]    4    8   12   16
apply(M, 1, sum)  
[1] 28 32 36 40
apply(M, 2, mean)  
[1]  2.5  6.5 10.5 14.5

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)
[1] 55 60 65 70 75
t(M2) %*% M2
     [,1] [,2] [,3] [,4] [,5]
[1,]  855  910  965 1020 1075
[2,]  910  970 1030 1090 1150
[3,]  965 1030 1095 1160 1225
[4,] 1020 1090 1160 1230 1300
[5,] 1075 1150 1225 1300 1375
mat <- matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9), nrow = 3, ncol = 3, byrow = TRUE)
mat[2, 3]
[1] 6
mat[2, ]
[1] 4 5 6
mat[, 3]
[1] 3 6 9
mat[c(1, 3), c(2, 3)]
     [,1] [,2]
[1,]    2    3
[2,]    8    9
t(mat)
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
A <- matrix(1:9, nrow = 3)
B <- matrix(9:1, nrow = 3)
A + B
     [,1] [,2] [,3]
[1,]   10   10   10
[2,]   10   10   10
[3,]   10   10   10
A * B
     [,1] [,2] [,3]
[1,]    9   24   21
[2,]   16   25   16
[3,]   21   24    9
A %*% B
     [,1] [,2] [,3]
[1,]   90   54   18
[2,]  114   69   24
[3,]  138   84   30
det(A)
[1] 0
diag(c(2, 4, 6))
     [,1] [,2] [,3]
[1,]    2    0    0
[2,]    0    4    0
[3,]    0    0    6
diag(3)
     [,1] [,2] [,3]
[1,]    1    0    0
[2,]    0    1    0
[3,]    0    0    1
rowSums(A)
[1] 12 15 18
colSums(A)
[1]  6 15 24
rowMeans(A)
[1] 4 5 6
colMeans(A)
[1] 2 5 8
 

LS0tCnRpdGxlOiAiWsOha2xhZG7DqSBvcGVyw6FjaWUgdiBSIgphdXRob3I6ICJCZWF0cml4IFTDs3Rob3bDoSAgPGJyPiIKZGF0ZTogIk9rdMOzYmVyIDIwMjUiCm91dHB1dDogCiAgaHRtbF9ub3RlYm9vazoKICAgIHRvYzogdHJ1ZQogICAgdG9jX2Zsb2F0OiB0cnVlCiAgICB0aGVtZTogdW5pdGVkCiAgICBoaWdobGlnaHQ6IHRhbmdvCmVkaXRvcl9vcHRpb25zOiAKICBtYXJrZG93bjogCiAgICB3cmFwOiA3MgotLS0KIAojIE51bWVyaWNrw6kgdmVrdG9yeQogCiMjIEdlbmVyb3ZhbmllIHZla3Rvcm92CiAKYGBge3J9CnYxIDwtIGMoMSwgMywgNywgOSkKdjIgPC0gMTo2ICAgICAgICAgICAgICAgICAKdjMgPC0gc2VxKGZyb20gPSAwLCB0byA9IDQsIGJ5ID0gMC4yNSkgIAp2NCA8LSByZXAoMiwgdGltZXMgPSA2KSAgICAKdjUgPC0gcnVuaWYoNykgICAgICAgICAgICAgCnY2IDwtIHJub3JtKDQpICAgICAgICAgICAgCnYxOyB2MjsgdjM7IHY0OyB2NQpgYGAKIAojIyBBcml0bWV0aWNrw6kgb3BlcsOhY2llIHMgdmVrdG9ybWkKIApgYGB7cn0KdiA8LSBjKDUsIDYsIDcsIDgpCnYgKyAyMCAgICAgICAgICAgCnYgKiAzICAgICAgICAgICAKKHYgKyAzKSAvIDIKZXhwKHYpICAgICAgICAgIApzdW0oYyg0LDUsNiksYygyLDIsMikpICAgICAgICAgCmNyb3NzcHJvZChjKDQsNSw2KSxjKDIsMiwyKSkgICAgCmMoNCw1LDYpKmMoMiwyLDIpICAgICAgICAgICAgIApgYGAKIAojIyBNYXRlbWF0aWNrw6kgb3BlcsOhY2llIHMgMiB2ZWt0b3JtaSByb3ZuYWvDqWhvIHJvem1lcnUKIApgYGB7cn0KbGVuZ3RoKGMoMyw0LDUsNiw3LDgsOSkpCmxlbmd0aCh2NSkgICAgICAgICAgIApjKDEsMiw1LDYsNyw4LDkpICsgdjUgICAKYGBgCiAKIyMgSW5kZXhvdmFuaWUgYSB2w71iZXIgbmlla3RvcnljaCBwcnZrb3YgdmVrdG9yYQogCmBgYHtyfQp4IDwtIGMoNiwgMTAsIDIsIDE3LCA0LCAxLCAyNCkKeFsyXSAgICAgICAgICAKeFs0OjZdICAgICAgICAKeFstMV0gICAgICAgICAKeFt4ID4gMTBdICAgICAgCndoaWNoKHggPiAxMCkgIApgYGAKIAojIyBQcsOhY2EgcyBjaMO9YmFqw7pjaW1pIGhvZG5vdGFtaQogCmBgYHtyfQp5IDwtIGMoMiwgTkEsIDcsIE5BLCA5KQppcy5uYSh5KQptZWFuKHkpICAgICAgICAgICAgICAgICAKbWVhbih5LCBuYS5ybSA9IFRSVUUpICAKYGBgCiAKIyMgWsOha2xhZG7DqSDFoXRhdGlzdGlreSBhIHVzcG9yaWFkYW5pZSBwcnZrb3YgdmVrdG9yYSBwb2TEvmEgdmXEvmtvc3RpCiAKYGBge3J9CnogPC0gYygxNiwgNiwgMywgNSwgOSkKbWVhbih6KSAgICAgICAgICAgICAgICAKc2QoeikgICAgICAgICAgICAgICAgIAptYXgoeikgICAgICAgICAgICAgICAgICAKc3VtbWFyeSh6KSAgICAgICAgICAgICAgCnNvcnQoeikgICAgICAgICAgICAgICAgIApzb3J0KHosIGRlY3JlYXNpbmcgPSBUUlVFKSAgCmBgYAogCiMjIE1hbMOpIGN2acSNZW5pZQo+IFZ5dHZvcnRlIHZla3RvciBgd2AgcyDEjcOtc2xhbWkgMS4uMjAgYSB2eXBvxI3DrXRhanRlIHN1bXUgdsWhZXRrw71jaCBww6FybnljaCDEjcOtc2VsLgogCmBgYHtyfQp3IDwtIDE6MjAKc3VtKHdbdyAlJSAyID09IDBdKQpgYGAKYGBge3J9CmJvZHkgPC0gYyg0NSwgNjAsIDc1LCA5MCwgNTUsIDgwKQpib2R5W2JvZHkgPiA3MF0KIAptZWFuKGJvZHkpCm1pbihib2R5KQptYXgoYm9keSkKIAphbGwoYm9keSA+IDQwKQogCmEgPC0gYygxLCAyLCAzKQpiIDwtIGMoNCwgNSwgNikKYSArIGIKYSAqIGIKIApgYGAKIAojIE1hdGljZQogCiMjIFZ5dHZvcmVuaWUgbWF0w61jCiAKYGBge3J9Cm0gPC0gbWF0cml4KDE6MTYsIG5yb3cgPSA0LCBuY29sID0gNCkgICAgICAgICAgIAptX2J5cm93IDwtIG1hdHJpeCgxOjE2LCBucm93ID0gNCwgYnlyb3cgPSBUUlVFKSAKbTsgbV9ieXJvdwpgYGAKIAojIyBSb3ptZXJ5IG1hdGljZQogCmBgYHtyfQpkaW0obSkgICAgICAgICAgICAgICAgICAgCm0KYGBgCiAKIyMgQWRyZXNvdmFuaWUgcHJ2a292IG1hdGljZQogCmBgYHtyfQptWzMsIDRdICAgICAKbVsgLCA0XSAgICAgIAptWzIsIF0gICAgICAgCm1bMzo0LCAxOjJdICAKYGBgCiAKIyMgTWF0aWNvdsOpIG9wZXLDoWNpZQogCmBgYHtyfQpBIDwtIG1hdHJpeChjKDMsNSw3LDkpLCBucm93ID0gMikKQiA8LSBtYXRyaXgoYygxLDUsNiw4KSwgbnJvdyA9IDIpCiAKQSArIEIgICAgICAgIApBICogQiAgICAgICAgCkEgJSolIEIgICAgICAKdChBKSAgICAgICAgCmRldChBKSAgICAgICAKc29sdmUoQSkgICAgIApgYGAKIAojIyBabHXEjW92YW5pZSB2ZWt0b3JvdiBkbyBtYXTDrWMKIApgYGB7cn0KQyA8LSBjYmluZCgxOjIsIDQ6NSkgICAKRCA8LSByYmluZCgxOjIsIDQ6NSkgIApDOyBECmBgYAogCiMjIFZ5cG/EjcOtdGFuaWUgenZvbGVuZWogxaF0YXRpc3Rpa3kgcG8gcmlhZGtvY2ggKHN0xLpwY29jaCkgbWF0aWNlCiAKYGBge3J9Ck0gPC0gbWF0cml4KDE6MTYsIG5yb3cgPSA0KQpNCmFwcGx5KE0sIDEsIHN1bSkgIAphcHBseShNLCAyLCBtZWFuKSAgCmBgYAogCiMjIE1hbMOpIGN2acSNZW5pZQogCj4gVnl0dm9ydGUgbWF0aWN1IDV4NSBzIGhvZG5vdGFtaSBwbyByaWFka29jaCAxLi4yNSwgdnlwb8SNw610YWp0ZSBzdMS6cGNvdsOpIHN1bXkgYSBzw7rEjWluIG1hdMOtYyBcKE1edCBNXCkuCiAKYGBge3J9Ck0yIDwtIG1hdHJpeCgxOjI1LCBucm93ID0gNSwgYnlyb3cgPSBUUlVFKQpjb2xTdW1zKE0yKQp0KE0yKSAlKiUgTTIKYGBgCmBgYHtyfQptYXQgPC0gbWF0cml4KGMoMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSksIG5yb3cgPSAzLCBuY29sID0gMywgYnlyb3cgPSBUUlVFKQptYXRbMiwgM10KbWF0WzIsIF0KbWF0WywgM10KbWF0W2MoMSwgMyksIGMoMiwgMyldCnQobWF0KQpBIDwtIG1hdHJpeCgxOjksIG5yb3cgPSAzKQpCIDwtIG1hdHJpeCg5OjEsIG5yb3cgPSAzKQpBICsgQgpBICogQgpBICUqJSBCCmRldChBKQpkaWFnKGMoMiwgNCwgNikpCmRpYWcoMykKcm93U3VtcyhBKQpjb2xTdW1zKEEpCnJvd01lYW5zKEEpCmNvbE1lYW5zKEEpCiAKYGBgCi0tLQ==