Globálne nastavenie Chunkov

V nižšie uvedenom Chunku je urobené základné globálne nastavenie Chunkov v celom Notebooku.

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

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

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

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


Skaláre (jednočíselné hodnoty)

Numerické skaláre

# Priradenie konštanty do premennej
a <- 20
b <- 5.5

# Arithmetic
sum_ab      <- a + b        # sucet
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 %% 3       # zbytok po delení tromi (tzv modulo)


# Rounding
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] 20
## [1] 5.5
sum_ab; diff_ab; prod_ab; quot_ab; power_ab; mod_ab;
## [1] 25.5
## [1] 14.5
## [1] 110
## [1] 3.636364
## [1] 14310835
## [1] 2
round_b; ceil_b; floor_b
## [1] 6
## [1] 6
## [1] 5

Poznámky

  • ^ operátor umocňovania.
  • %% je modulo, teda zbytok po delení,
  • round(x, digits = 0) zaokrúhľovanie na určitý počet desatinných miest (digits=). ak digits = 0, potom ide o celočíselné zaokrúhľovanie

Malé cvičenie

Vypočítajte:

\[\frac{(8^3+20)^2}{7}\]

(8^3 + 20)^2 / 7
## [1] 40432

Text

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

first <- "Dominika"                       # definovanie obsahu textovej premennej first
last  <- "Dudášová"                          # definovanie obsahu text. premennej last
full  <- paste(first, last)               # spojenie dvoch text. premennych do jednej (s medzerou)
full_nospace <- paste0(first, last)       # spojenie bez medzery
csv_line <- paste("Adam", "Eva", "Jakub", sep = ",")  # spojenie textov s oddelovacom ,
first; last; full; full_nospace; csv_line   # bodkočiarka tu nahradzuje odskok na novy riadok 
## [1] "Dominika"
## [1] "Dudášová"
## [1] "Dominika Dudášová"
## [1] "DominikaDudášová"
## [1] "Adam,Eva,Jakub"

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

x <- "Hokej a lyžovanie sú skvelé zimné športy"
nchar(x)                 # počet znakov  v retazci "Hokej a lyžovanie sú skvelé zimné športy"
## [1] 40
substr(x, 1, 5)          # podreťazec od 1. do 5. znaku
## [1] "Hokej"

Tip: Knižnica stringr mnohé zaujímavé možnosti práce s textami, ale implicitné knižnice R pokrývajú väčšinu bežných potrieb páce s textami.


Logické (boolovské) hodnoty a premenné

Základy

x <- TRUE
y <- FALSE
!x                # NOT
## [1] FALSE
x & y             # AND
## [1] FALSE
x | y             # OR
## [1] TRUE
xor(x, y)          # exclusive OR - platí len jedno z p,alebo q
## [1] TRUE

Logický výsledok porovnávania

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

Zložitejšie logické operácie

x <- 15
x > 5 & x < 18     # 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

Numerické vektory

Generovanie vektorov

v1 <- c(4, 6, 8, 10)
v2 <- 1:5                  # postupnost 1,2,3,4,5
v3 <- seq(from = 0, to = 1, by = 0.15)  # postupnost s krokom 0.25
v4 <- rep(4, times = 6)    # 3,3,3,3,3  # 5 clenna postupnost trojak
v5 <- runif(5)             # generovanie rovnomerne rozdelenych premennych v intervale [0,1]
v6 <- rnorm(5)             # generovanie normalne rozdelenych premennych
v1; v2; v3; v4; v5
## [1]  4  6  8 10
## [1] 1 2 3 4 5
## [1] 0.00 0.15 0.30 0.45 0.60 0.75 0.90
## [1] 4 4 4 4 4 4
## [1] 0.40453033 0.65254133 0.35854357 0.71221321 0.03769277

Aritmetické operácie s vektormi

v <- c(1, 2, 3, 4)
v + 20          # kazdy prvok vektora zvacsime o 20
## [1] 21 22 23 24
v * 4            # kazdy prvok vektora prenasobime 4
## [1]  4  8 12 16
(v + 5) / 3
## [1] 2.000000 2.333333 2.666667 3.000000
exp(v)           # exponencialna funkcia z kazdeho prvku vektora
## [1]  2.718282  7.389056 20.085537 54.598150
sum(c(1,2,3),c(1,1,1))          # skalarny sucin - vysledok je skalar
## [1] 9
crossprod(c(1,2,3),c(1,1,1))    # skalarny sucin - vysledok je matica 1x1
##      [,1]
## [1,]    6
c(1,2,3)*c(1,1,1)               # Hadamardov sucin (sucin zodpovedajucich prvkov vektora)
## [1] 1 2 3

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

length(c(2,3,4,5,6))
## [1] 5
length(v5)            #vektor v5 je definovany vyssie
## [1] 5
c(2,3,4,5,6) + v5     # pozor, oba vektory musia mat rovnaky rozmer
## [1] 2.404530 3.652541 4.358544 5.712213 6.037693

Indexovanie a výber niektorych prvkov vektora

x <- c(10, 15, 5, 20, 14, 2, 35)
x[3]           # indexovanie - novy jedno-prvkovy vektor - prvy prvok vektora x
## [1] 5
x[4:6]         # novy vektor s druhym az stvrtym prvkom vektora x
## [1] 20 14  2
x[-2]          # novy vektor - vsetky prvky vektora x okrem prvého
## [1] 10  5 20 14  2 35
x[x > 10]      # novy vektor definovany prvkami x vacsimi ako 10
## [1] 15 20 14 35
which(x > 10)  # ktore prvky zodpovedaju podmienke vacsieho ako 10?
## [1] 2 4 5 7

Práca s chýbajúcimi hodnotami

y <- c(2, NA, 4, NA, 6)
is.na(y)
## [1] FALSE  TRUE FALSE  TRUE FALSE
mean(y)                 # NA
## [1] NA
mean(y, na.rm = TRUE)   # remove NAs
## [1] 4

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

z <- c(20, 6, 10, 16, 4)
mean(z)                 # priemerna hodnota
## [1] 11.2
sd(z)                  # standardna odchylka
## [1] 6.723095
max(z)                  # maximalna hodnota
## [1] 20
summary(z)              # rychly prehlad zakladnych statistik o vektore
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     4.0     6.0    10.0    11.2    16.0    20.0
sort(z)                 # rastuce usporiadanie 
## [1]  4  6 10 16 20
sort(z, decreasing = TRUE)  # klesajuce
## [1] 20 16 10  6  4

Malé cvičenie

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

w <- 5:35
sum(w[w %% 2 == 0])
## [1] 300

```