1. Vektori¶
Vektori su, u suštini, dvodimenzionalna polja.
Kreiramo ih koristeći funkciju combine: c()
Primjer:
tjedan_vektor <- c("pon", "uto", "sri", "cet", "pet", "sub", "ned")
Zadatak
Kreirajte vektor gradovi_vektor
čiji će elementi biti gradovi Rijeka, Zagreb, Split i Osijek.
Zatim ga ispišite.
gradovi_vektor<-c("Rijeka", "Zagreb", "Split", "Osijek")
gradovi_vektor
- 'Rijeka'
- 'Zagreb'
- 'Split'
- 'Osijek'
Klase vektora¶
Vektori mogu imate i svoje klase isto kao i varijable.
Klasu provjeravamo funkcijom class()
Primjer:
logicki_vektor <- c(TRUE, FALSE, TRUE)
character_vektor <- c("a", "b", "c")
numericki_vektor <- c(1, 2, 3)
Zadatak:
Provjerite koje je klase vektor gradovi_vektor
iz prethodnog zadatka.
class(gradovi_vektor)
# Mješovite vektora tretira kao character ako ima barem jedan character
mjes <- c( "malo teksta", 5, TRUE)
class(mjes)
mjes
- 'malo teksta'
- '5'
- 'TRUE'
Imenovanje vektora¶
Da bi ispisali nekog člana vektora, moramo znati njegovu rednu poziciju u vektoru.
Na primjer:
naredba gradovi[2]
će nam kao rezultat ispisati 'Zagreb'
'Zagreb'
je bio drugi član u našem vektoru gradovi
.
Pazite: Članovi vektora imaju redne brojeve koji počinju brojem 1 (ne 0 kao u nekim programskim jezicima, npr: c++)
gradovi_vektor
gradovi_vektor[3]
- 'Rijeka'
- 'Zagreb'
- 'Split'
- 'Osijek'
No elementi vektora mogu imati i imena.
Primjerice, možemo imati vektor koji nam prikazuje potrošnju vode za svaki dan u tjednu.
potrosnja_vektor <- c(20, 30, 10, 15, 12, 14, 15)
gdje svaka vrijednost predstavlja potrošnju vode u našem objektu po danima u tjednu.
Da bi dobili potrošnju od "utorka" moramo koristiti potrosnja_vektor[2]
pošto je utorak drugi dan u tjednu. Postoji i drugi način.
# Unosimo vrijednosti vektora
potrosnja_vektor <- c(20, 30, 10, 15, 12, 14, 15)
# Kreiramo novi vektor sa vrijednostima "dani u tjednu"
tjedan_nazivi <- c("pon", "uto", "sri", "cet", "pet", "sub", "ned")
Vektoru potrosnja_vektor
dodijelimo imena iz vektora tjedan_nazivi
, na način:
names(potrosnja_vektor)<-tjedan_nazivi
# Sada vrijednosti vektora imaju imena i možemo ih pozivati imenom. Na primjer:
potrosnja_vektor["uto"]
# Ako prikažemo vrijednosti vektora, dobijemo:
potrosnja_vektor
- pon
- 20
- uto
- 30
- sri
- 10
- cet
- 15
- pet
- 12
- sub
- 14
- ned
- 15
# Strukturu našeg vektora možemo dobiti funkcijom `str()`
str(potrosnja_vektor)
Named num [1:7] 20 30 10 15 12 14 15 - attr(*, "names")= chr [1:7] "pon" "uto" "sri" "cet" ...
Zbrajanje vektora¶
Vektore možemo jednostavno zbrajati
Kreirajmo vektor potrosnja_vektor2
sa vrijednostima potrošnje iz drugog tjedna.
potrosnja_vektor <- c(20, 30, 10, 15, 12, 14, 15)
names(potrosnja_vektor) <- c("pon", "uto", "sri", "cet", "pet", "sub", "ned")
potrosnja_vektor2 <- c(4, 3, 6, 12, 8, 11, 6)
Tada ukupna potrošnja vode u ta dva tjedna iznosi ukupno_vektor
.
ukupno_vektor <- potrosnja_vektor + potrosnja_vektor2
ukupno_vektor
- pon
- 24
- uto
- 33
- sri
- 16
- cet
- 27
- pet
- 20
- sub
- 25
- ned
- 21
Primjećujemo da je vektor zbroj_vektora
naslijedio imena...
Zadatak
Kreirajte vektor koji se zove servisi2022_vektor
i pridružite mu vrijednosti 2, 4, 3, 1, 6, 4, 3, 2, 6, 7, 9 i 12
Tom vektoru dodijelite imena mjeseci_vektor
koji sadrži nazive mjeseci (siječanj, ... prosinac)
Zatim kreirajte vektor servisi2023_vektor
u kojem su sve vrijednosti dvostruke u odnosu na 2018. godinu.
Zbrojite ta dva vektora u vektor servisi22_23_vektor
i ispišite ga.
Rješenje
servisi2022_vektor <- c(2, 4, 3, 1, 6, 4, 3, 2, 6, 7, 9, 12)
mjeseci_vektor <- c("sij", "velj", "ozuj", "tra", "svi", "lip", "srp", "kol", "ruj", "list", "stud", "pros")
names(servisi2022_vektor)<-mjeseci_vektor
servisi2023_vektor <- 2*servisi2022_vektor
servisi22_23_vektor=servisi2022_vektor+servisi2023_vektor
servisi22_23_vektor
- sij
- 6
- velj
- 12
- ozuj
- 9
- tra
- 3
- svi
- 18
- lip
- 12
- srp
- 9
- kol
- 6
- ruj
- 18
- list
- 21
- stud
- 27
- pros
- 36
Zadatak
Ispišite vrijednosti servisi22_23_vektor
za prvih 6 mjeseci.
Rješenje
To možemo napraviti na više načina:
servisi22_23_vektor[c(1:6)]
servisi22_23_vektor[c(1, 2, 3, 4, 5, 6)]
servisi22_23_vektor[c("sij", "velj", "ozuj", "tra", "svi", "lip")]
servisi22_23_vektor[c(T, T, T, T, T, T, F, F, F, F, F, F)]
- sij
- 6
- velj
- 12
- ozuj
- 9
- tra
- 3
- svi
- 18
- lip
- 12
- sij
- 6
- velj
- 12
- ozuj
- 9
- tra
- 3
- svi
- 18
- lip
- 12
- sij
- 6
- velj
- 12
- ozuj
- 9
- tra
- 3
- svi
- 18
- lip
- 12
- sij
- 6
- velj
- 12
- ozuj
- 9
- tra
- 3
- svi
- 18
- lip
- 12