Základné operácie v R

Author

Chiara Púčeková

Published

October 1, 2026

Code
knitr::opts_chunk$set(
  echo = TRUE,
  message = FALSE,
  warning = FALSE
)

Skaláre

Numerické skaláre

Code
# Priradenie premennej konkrétnu hodnotu 
a <- 12
b <- 4.25

# Základné aritmetické operácie 
sum_ab       <- a + b           #súčet
diff_ab      <- a - b           #rozdiel
prod_ab      <- a * b           #násobenie
quot_ab      <- a / b           #delenie
power_ab     <- a ^ b           #umocňovanie
mod_ab       <- a %% 5          #zbytok po delení piatimi
int_div_ab   <- a %/% b         #celočíselné delenie 

a; b
[1] 12
[1] 4.25
Code
sum_ab; diff_ab; prod_ab; quot_ab
[1] 16.25
[1] 7.75
[1] 51
[1] 2.823529
Code
power_ab; mod_ab; int_div_ab
[1] 38594.04
[1] 2
[1] 2

Zaokrúhľovanie

Code
round_b <- round(b)
ceil_b  <- ceiling(b)
floor_b <- floor(b)

round_b; ceil_b; floor_b
[1] 4
[1] 5
[1] 4
Tip

Malé cvičenie

Vytvorila som dve numerické premenné “c” a “d”, na ktorých som precvičila základné aritmetické operácie, modulo aj zaokrúhľovanie

Code
c <- 234.83
d <- 559.274

# Základné aritmetické operácie 
sucet_cd    <- c + d
rozdiel_cd  <- c - d
sucin_cd    <- c * d
podiel_cd   <- d / c

sucet_cd; rozdiel_cd; sucin_cd; podiel_cd
[1] 794.104
[1] -324.444
[1] 131334.3
[1] 2.381612
Code
# Umocňovanie a modulo 
power_c <- c ^ 3
mod_c   <- c %% 5

power_c; mod_c
[1] 12949731
[1] 4.83
Code
# Zaokrúhľovanie 
round_c <- round(c)
floor_c <- floor(c)
ceil_d  <- ceiling(d)

round_c; floor_c; ceil_d
[1] 235
[1] 234
[1] 560

Text

Vytváranie textových premenných a práca s nimi

Code
first <- "Chiara" 
last  <- "Pucekova"

# Spojenie s medzerou 
full <- paste(first, last)

# Spojenie bez medzery 
full_nospace <- paste0(first, last)

# Spojenie viacerých slov s oddeľovačom
school <- paste("Comenius", "University", "Bratislava", sep = "-")

first; last; full; full_nospace; school 
[1] "Chiara"
[1] "Pucekova"
[1] "Chiara Pucekova"
[1] "ChiaraPucekova"
[1] "Comenius-University-Bratislava"

Dĺžka textového reťazca a podreťazec

Code
text <- "Econometrics is interesting"

# Počet znakov 
nchar(text)
[1] 27
Code
# Výber prvých 12 znakov 
substr(text, 1, 12)
[1] "Econometrics"

Logické hodnoty a premenné

Základné logické hodnoty a operácie

Code
p <- TRUE
q <- FALSE 

!p
[1] FALSE
Code
p & q
[1] FALSE
Code
p | q
[1] TRUE
Code
xor(p,q)
[1] TRUE

Logický výsledok porovnania

Code
10 < 15
[1] TRUE
Code
20 >= 20
[1] TRUE
Code
"Bratislava" == "Bratislava"
[1] TRUE
Code
"Bratislava" != "Trenčín"
[1] TRUE

Zložitejšie logické operácie

Code
vek <- 22

vek >= 18 & vek < 30
[1] TRUE
Code
vek < 18 | vek > 65
[1] FALSE

Zlúčenie logických hodnôt do vektora

Code
hodnoty <- c(TRUE, TRUE, FALSE, TRUE, FALSE)
hodnoty 
[1]  TRUE  TRUE FALSE  TRUE FALSE

Numerické vektory

Generovanie vektorov

Code
v1 <- c(3, 6, 9, 12)
v2 <- 5:10
v3 <- seq(from = 0, to = 2, by = 0.5)
v4 <- rep(4, times = 6)
v5 <- runif(6)
v6 <- rnorm(6)

v1; v2; v3; v4; v5; v6
[1]  3  6  9 12
[1]  5  6  7  8  9 10
[1] 0.0 0.5 1.0 1.5 2.0
[1] 4 4 4 4 4 4
[1] 0.8360065 0.7409553 0.7789008 0.6901887 0.3440477 0.3099554
[1]  0.74379740  0.09110435  0.01473292  0.60858940 -0.51622578  0.55389578

Aritmetické operácie s vektormi

Code
v <- c(2, 4, 6, 8)

v + 5
[1]  7  9 11 13
Code
v * 3
[1]  6 12 18 24
Code
(v + 2) / 2
[1] 2 3 4 5
Code
exp(v)
[1]    7.389056   54.598150  403.428793 2980.957987

Operácie s dvoma vektormi

Code
x1 <- c(2, 4, 6)
x2 <- c(1, 3, 5)

sum(x1, x2)
[1] 21
Code
crossprod(x1, x2)
     [,1]
[1,]   44
Code
x1 * x2
[1]  2 12 30

Dĺžka vektora

Code
length(v1)
[1] 4
Code
length(v5)
[1] 6

Indexovanie a výber prvkov

Code
x <- c(8, 15, 4, 22, 10, 3, 18)

# Prvý prvok
x[1]
[1] 8
Code
# Druhý až štvrtý prvok
x[2:4]
[1] 15  4 22
Code
# Všetky prvky okrem prvého
x[-1]
[1] 15  4 22 10  3 18
Code
# Hodnoty väčšie ako 10
x[x > 10]
[1] 15 22 18
Code
# Pozície hodnôt väčších ako 10
which(x > 10)
[1] 2 4 7

Práca s chýbajúcimi hodnotami

Code
y <- c(5, NA, 8, 12, NA, 15)

is.na(y)
[1] FALSE  TRUE FALSE FALSE  TRUE FALSE
Code
# Priemer bez odstránenia NA
mean(y)
[1] NA
Code
# Priemer po odstránení NA 
mean(y, na.rm = TRUE)
[1] 10

Základné štatistiky

Code
z <- c(12, 7, 15, 4, 18, 10)

mean(z)
[1] 11
Code
sd(z)
[1] 5.138093
Code
max(z)
[1] 18
Code
summary(z)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   4.00    7.75   11.00   11.00   14.25   18.00 
Code
# Zoradenie vzostupne 
sort(z)
[1]  4  7 10 12 15 18
Code
# Zoradenie zostupne
sort(z, decreasing = TRUE)
[1] 18 15 12 10  7  4
Tip

Malé cvičenie 2 - Vektory

Vektor - počet bodov desiatich študentov, ktorí sa zúčastnili testu

Code
body <- c(72, 85, 91, 64, 78, 95, 56, 88, 69, 82)

body 
 [1] 72 85 91 64 78 95 56 88 69 82

Zistíme počet študentov, priemerný počet bodov a najvyšší počet bodov

Code
length(body)
[1] 10
Code
mean(body)
[1] 78
Code
max(body)
[1] 95

Vyberieme tých študentov, ktorí z testu získali viac ako 80 bodov

Code
body[body > 80]
[1] 85 91 95 88 82

Zistíme pozície týchto študentov v našom vektore

Code
which(body > 80)
[1]  2  3  6  8 10

Body zoradíme od najvyššieho po najmenší

Code
sort(body, decreasing = TRUE)
 [1] 95 91 88 85 82 78 72 69 64 56

Každému študentovi k bodom z testu pridáme ešte 5 bonusových bodov

Code
body_bonus <- body + 5
body_bonus
 [1]  77  90  96  69  83 100  61  93  74  87

Vypočítame súčet bodov študentov, ktorí z testu dosiahli aspoň 80 bodov

Code
sum(body[body >= 80])
[1] 441

Matice

Vytvorenie matíc

Code
m <- matrix (2:13, nrow = 3, ncol = 4)

m_byrow <- matrix(2:13, nrow = 3, byrow = TRUE)

m; m_byrow
     [,1] [,2] [,3] [,4]
[1,]    2    5    8   11
[2,]    3    6    9   12
[3,]    4    7   10   13
     [,1] [,2] [,3] [,4]
[1,]    2    3    4    5
[2,]    6    7    8    9
[3,]   10   11   12   13

Rozmery matice

Code
dim(m)
[1] 3 4

Adresovanie prvkov matice

Code
# Prvý riadok, druhý stĺpec 
m[1, 2]
[1] 5
Code
# Všetky prvky tretieho stĺpca 
m[, 3]
[1]  8  9 10
Code
# Všetky prvky druhého riadku
m[2, ]
[1]  3  6  9 12
Code
# Podmatica 
m[1:2, 2:3]
     [,1] [,2]
[1,]    5    8
[2,]    6    9

Maticové operácie

Code
A <- matrix(c(2, 3, 4, 5), nrow = 2)
B <- matrix(c(6, 7, 8, 9), nrow = 2)

# Sčítanie
A + B
     [,1] [,2]
[1,]    8   12
[2,]   10   14
Code
# Násobenie zodpovedajúcich prvkov 
A * B
     [,1] [,2]
[1,]   12   32
[2,]   21   45
Code
# Maticové násobenie 
A %% B
     [,1] [,2]
[1,]    2    4
[2,]    3    5
Code
# Transpozícia 
t(A)
     [,1] [,2]
[1,]    2    3
[2,]    4    5
Code
# Determinant
det(A)
[1] -2
Code
# Inverzná matica 
solve(A)
     [,1] [,2]
[1,] -2.5    2
[2,]  1.5   -1

Zlučovanie vektorov do matíc

Code
C <- cbind(2:4, 5:7)
D <- rbind(2:4, 5:7)

C; D
     [,1] [,2]
[1,]    2    5
[2,]    3    6
[3,]    4    7
     [,1] [,2] [,3]
[1,]    2    3    4
[2,]    5    6    7

Štatistiky po riadkoch a stĺpcoch

Code
M <- matrix(2:10, nrow = 3)

M
     [,1] [,2] [,3]
[1,]    2    5    8
[2,]    3    6    9
[3,]    4    7   10
Code
# Súčet po riadkoch 
apply(M, 1, sum)
[1] 15 18 21
Code
# Priemer po stĺpcoch
apply(M, 2, mean)
[1] 3 6 9
Tip

Malé cvičenie 3 - Matice

Matica - výsledky štyroch študentov v troch testochh

Code
vysledky <- matrix(
  c(75, 82, 90,
    68, 74, 81,
    92, 88, 95, 
    80, 79, 85),
  nrow = 4,
  byrow = TRUE)

vysledky 
     [,1] [,2] [,3]
[1,]   75   82   90
[2,]   68   74   81
[3,]   92   88   95
[4,]   80   79   85

Rozmery matice

Code
dim(vysledky)
[1] 4 3

Výsledky prvého študenta z druhého testu

Code
vysledky[1, 2]
[1] 82

Výsledky všetkých študentov z tretieho testu

Code
vysledky[, 3]
[1] 90 81 95 85

Všetky výsledky druhého študenta

Code
vysledky[2, ]
[1] 68 74 81

Celkový počet bodov každého študenta

Code
apply(vysledky, 1, sum)
[1] 247 223 275 244

Priemerný počet bodov v jednotlivých testoch

Code
apply(vysledky, 2, mean)
[1] 78.75 80.75 87.75

Transponovaná matica

Code
t(vysledky)
     [,1] [,2] [,3] [,4]
[1,]   75   68   92   80
[2,]   82   74   88   79
[3,]   90   81   95   85

Súčin transponovanej a pôvodnej matice

Code
t(vysledky) %*% vysledky  
      [,1]  [,2]  [,3]
[1,] 25113 25598 27798
[2,] 25598 26185 28449
[3,] 27798 28449 30911

Vlastné čísla a vlastné vektory matíc

Výpočet pomocou funkcie eigen()

Code
A_eig <- matrix(c(4, 1,
                1, 4),
                nrow = 2, byrow = TRUE)

A_eig
     [,1] [,2]
[1,]    4    1
[2,]    1    4
Code
eig_A <- eigen(A_eig, symmetric = TRUE)

eig_A
eigen() decomposition
$values
[1] 5 3

$vectors
          [,1]       [,2]
[1,] 0.7071068 -0.7071068
[2,] 0.7071068  0.7071068
Code
lambda_A <- eig_A$values
V_A <- eig_A$vectors

lambda_A; V_A
[1] 5 3
          [,1]       [,2]
[1,] 0.7071068 -0.7071068
[2,] 0.7071068  0.7071068
Tip

Malé cvičenie 4 - Vlastné čísla a vektory matíc

Vlastná symetrická matica 3x3 - vypočítam vlastné čísla a vlastné vektory

Code
hodnoty <- c(
  0.00225, 0.00012, 0.00095,
  0.00012, 0.00081, 0.00047,
  0.00095, 0.00047, 0.00625
)

E <- matrix(hodnoty, nrow = 3, byrow = TRUE)

E
        [,1]    [,2]    [,3]
[1,] 0.00225 0.00012 0.00095
[2,] 0.00012 0.00081 0.00047
[3,] 0.00095 0.00047 0.00625
Code
eig_E <- eigen(E, symmetric = TRUE)

eig_E
eigen() decomposition
$values
[1] 0.0065054401 0.0020359878 0.0007685721

$vectors
            [,1]        [,2]        [,3]
[1,] -0.21937295  0.97520511  0.02916352
[2,] -0.08482918  0.01071313 -0.99633791
[3,] -0.97194625 -0.22104351  0.08037568
Code
eig_E$values 
[1] 0.0065054401 0.0020359878 0.0007685721
Code
eig_E$vectors 
            [,1]        [,2]        [,3]
[1,] -0.21937295  0.97520511  0.02916352
[2,] -0.08482918  0.01071313 -0.99633791
[3,] -0.97194625 -0.22104351  0.08037568