### R jako vylepsena kalkulacka ###
2+5*3
sqrt((42 + 4.2)^2 + sin(exp(1) * pi))

### objekty v R ###

# jednorozmerne ciselne

a <- 1  # vytvoreni objektu (cisla)
a
(a <- 1) # vytvoreni objektu a zaroven vypis na obrazovku

# case sensitive (!rozlisuje velka a mala pismena!)
a <- 25
A <- 4
a
A

a <- 2.2  # R pouziva desetinnou tecku

# operace podobne jako s cisly

a+A
2*a+log(A)

# znakove - string (mozno pouzivat oba druhy uvozovek)

a <- "something"  
b <- 'something else'


# logicke - TRUE/FALSE i T/F

a <- TRUE   
b <- F


#specialni - NA (not available; chybejici hodnota)
a <- NA


# vicerozmerne objekty - vektory
d <- c(17, 25, 31, 40)
d

e <- c('A','B','A')
e

# prikazy pro vytvoreni specialnich vektoru (posloupnosti)
1:40
seq(1, 40, by = 1)
seq(1, 40, length = 40)

rep(1, 40) # replikace 
rep(c(1,2), 40)


# slozky vektoru
d[1]  # vyber prvni slozky
d[c(1, 2)] # vyber prvni a druhe slozky
d[-1] # vyber vsech slozek krome prvni


# dvourozmerne objekty - matice 
(A <- matrix(c(1,2,3,4,5,6), nrow = 2, ncol = 3))  # matice - skladano po sloupcich
matrix(c(1,2,3,4,5,6), nrow = 2, ncol = 3, byrow = TRUE)  # matice skladana po radcich

# zakladni funkce pro praci s maticemi
dim(A)
nrow(A)
ncol(A)


A[1, 1] # vyber slozky 1,1
A[, 1]  # vyber prvniho sloupce
A[1, ]  # vyber prvniho radku

# matice muze vzniknout i 'slepenim' vektoru po radcich
rbind(c(1,1,1,1),c(2,2,2,2),c(3,3,3,3))

# nebo po sloupcich
cbind(c(1,1,1,1),c(2,2,2,2),c(3,3,3,3))

# matice nemusi byt jen ciselne, ale vsechny prvky musi byt stejneho typu
matrix(c('this', 'is', 'a', 'matrix'), nrow=2, byrow=TRUE)


# data frame - 'matice, ktera muze obsahovat ruzne datove typy'

getwd()

# nastavime 'domaci adresar'
setwd(" ")
dir()

# a nacteme data
data<-read.table("nzrivers.txt",header=TRUE)

# napoveda
help(read.table)
?read.table

data
View(data)
head(data,n=3) # vypis prvnich tri radku
tail(data,n=5) # vypis poslednich peti radku
str(data) # struktura dat
names(data) # nazvy sloupcu (promennych)

# vyber hodnoty 1. sloupce v 1.radku
data[1,1]

# vyber prvniho sloupce
data[,1]
data[,'River']
data$River

# faktory - znakove promenne s predem urcenymi hodnotami
data$FlowsInto # obycejna znakova promenna (vektor znaku)

data$FlowsInto<- as.factor(data$FlowsInto) # zmenime ji na faktor
data # data vypadaji stejne
str(data)

data$FlowsInto # nyni je to uz faktor


# uvazujme jeste nasledujici data
data2<-read.table("Zaznam-teploty.txt",header=TRUE)

hodiny <- data2$Hodina
teploty <- data2$Teplota

teploty == 37.7 # je dana teplota rovna hodnote 37.7?
sum(teploty == 37.7) # pocet takovych hodnot
which(teploty == 37.7) # ktere hodnoty to jsou
hodiny[teploty == 37.7] # jakym hodnotam hodin odpovidaji

plot(data2) # vytvori klasicky bodovy graf
plot(data)  # srovnejte s timto

plot(hodiny, teploty, xlab = 'cas (h)', ylab = 'teplota (°C)',col = 'orchid3',
type = 'o', pch = 21, lwd = 2, lty = 2, bg = 'bisque', xlim = c(-1, 23),
ylim = c(36, 39),main='Zavislost teploty na case')

legend('bottomright', fill = 'orchid3', legend = 'Teplota 13.9.2021 (J. Kadrnozka)',
bty = 'n')


