Úvod k základným operáciám v R

Tento notebook demonštruje základné operácie v jazyku R so:

  • skalárnymi číslami (t.j. 1 číslo),
  • textovými (znakovými) reťazcami,
  • logickými (boolovskými) hodnotami a premennými,
  • (numerickými) vektormi,
  • maticami.

Tam, kde je to užitočné, sú zahrnuté malé cvičenia.


Číselné hodnoty a premenné

Najskôr si vytvoríme jednoduché číselné premenné a vyskúšame základné aritmetické operácie.

# Jednoduché číselné premenné
a <- 12  # priradenie hodnoty
b <- 4.2 # priradenie hodnoty

# Základné aritmetické operácie
sum_ab <- a + b   # sčítanie
diff_ab <- a - b  # rozdiel
prod_ab <- a * b  # násobenie
quot_ab <- a / b  # delenie
power_ab <- a ^ 2 # umocňovanie
mod_ab <- a %% 5  # zvyšok po delení 5

# Zaokrúhľovanie
round_b   <- round(b)       # zaokruhlovanie smerom k najblizsiemu celemu cislu
ceil_b    <- ceiling(b)     # najblizsie vyssie cele cislo
floor_b   <- floor(b)       # najblizsie nizsie cele cislo

a; b
## [1] 12
## [1] 4.2
sum_ab; diff_ab; prod_ab; quot_ab; power_ab; mod_ab;
## [1] 16.2
## [1] 7.8
## [1] 50.4
## [1] 2.857143
## [1] 144
## [1] 2
round_b; ceil_b; floor_b
## [1] 4
## [1] 5
## [1] 4

Malé cvičenie

Vypočítajte:

\[\frac{(64^2-268)}{12}\]

(64^2 - 268) / 12
## [1] 319

Text

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

meno <- "Erika"                       
priezvisko  <- "Polakovičová"                         
full  <- paste(meno, priezvisko)          # spojenie dvoch text. premennych do jednej (s medzerou)
full_nospace <- paste0(meno, priezvisko)  # spojenie bez medzery
csv_line <- paste("apple", "banana", "pear", sep = ",")  # spojenie textov s oddelovacom ,
meno; priezvisko; full; full_nospace; csv_line   # bodkočiarka tu nahradzuje odskok na novy riadok 
## [1] "Erika"
## [1] "Polakovičová"
## [1] "Erika Polakovičová"
## [1] "ErikaPolakovičová"
## [1] "apple,banana,pear"

Malé cvičenie

Vytvorte dve textové premenné: objekt a farba, a spojte ich do jedného reťazca.

objekt <- "slnko"
farba <- "žlté"
paste(farba, objekt)
## [1] "žlté slnko"

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

x <- "R is great!"
nchar(x)                 # počet znakov  v retazci "R is great!"
## [1] 11
substr(x, 1, 5)          # podreťazec od 1. do 5. znaku
## [1] "R is "

Logické (boolovské) hodnoty a premenné

Základy

p <- TRUE
q <- FALSE
!p                 # negácia
## [1] FALSE
p & q              # a súčasne
## [1] FALSE
p | q              # alebo
## [1] TRUE
xor(p, q)          # exclusive OR - platí len jedno z p alebo q
## [1] TRUE

Logický výsledok porovnávania

3 < 5
## [1] TRUE
7 >= 7
## [1] TRUE
"cat" == "cat"
## [1] TRUE
"cat" != "dog"   # vykricnik je tu v zmysle negacie. Napr.:   !=, !>, !<, !TRUE
## [1] TRUE
!TRUE
## [1] FALSE

Malé cvičenie

Definujte 2 premenné: vek = 19 a študent = TRUE. Overte, či platí: 1. vek je väčší ako 18 a zároveň ide o študenta 2. vek je menší ako 18 alebo nejde o študenta

vek <- 19
študent <- TRUE

(vek > 18) & (študent == TRUE)
## [1] TRUE
(vek < 18) | (študent == FALSE)
## [1] FALSE

Zložitejšie logické operácie

x <- 10
x > 5 & x < 20      # a sucasne - logicky prienik (sucin)
## [1] TRUE
x < 0 | x > 100     # alebo - logicke zjednotenie (sucet)
## [1] FALSE
                    # pri zlozitejsich vztahoch pouzivajte zatvorky ()

Zlučovanie viacerých log. premenných do vektora

vals <- c(TRUE, FALSE, TRUE, TRUE)   # definicia vektora s logickymi hodnotami

Malé cvičenie

x <- TRUE
y <- FALSE
!(!x | y) & (x | !y)
## [1] TRUE

Môj návrh použitia novinky

Ako novinku si ukážeme funkcie grepl() a gsub() na prácu s textom.

  • grepl() zisťuje, či sa v texte nachádza určitý reťazec,
  • gsub() nahrádza podreťazec v texte iným.
veta <- "Bratislava je hlavné mesto Slovenska"

# Zisťovanie, či sa v texte nachádza slovo "mesto"
grepl("mesto", veta)
## [1] TRUE
# Nahradenie slova "Slovenska" za "Európy"
gsub("Slovenska", "Európy", veta)
## [1] "Bratislava je hlavné mesto Európy"