4 Identifikatori i vrijednosti

4.1 Osnovni tipovi podataka

Poznavanje osnovnih tipova podataka predstavlja temeljnu vještinu za rad u R-u iz nekoliko razloga. Prvo, tip podataka određuje kako će R pohraniti i rukovati unesenim podacima, što direktno utječe na točnost i efikasnost analize. Ako, na primjer, numerički podatak greškom označimo kao tekst (engl. character), nećemo moći provoditi matematičke operacije nad njim.

Razumijevanje tipova podataka važno je za ispravno učitavanje podataka, gdje R mora znati treba li neki stupac tretirati kao brojeve, tekst ili datume. Također, ovo znanje omogućuje otkrivanje i ispravljanje grešaka.

Mnoge statističke funkcije zahtijevaju specifične tipove podataka, a manipulacija podacima često uključuje njihove transformacije. Bez razumijevanja osnovnih tipova podataka, mogli bismo doći do pogrešnih zaključaka ili bi analiza mogla biti značajno otežana zbog neočekivanog ponašanja funkcija uslijed unosa pogrešnog tipa podataka.

Naziv Primjer Vrsta
1. double 1, 2.33, 50.99, 3e10 realni brojevi
2. integer 5l, -2, 5387l cjeli brojevi
3. character slova, oznake, 50 %, pa} znakovni tip
4. logical TRUE, FALSE, T, F logicki
5. complex 1+5i, 5-2i kompleksni brojevi
6. raw as.raw(11) sirovi

Ova tablica prikazuje šest osnovnih tipova podataka u R-u, njihove primjere i kratke opise. Tip double koristi se za realne brojeve i najčešći je numerički tip u R-u, omogućujući precizne decimalne kalkulacije. Integer predstavlja cijele brojeve. Tip character obuhvaća sve tekstualne podatke, uključujući slova, oznake i brojeve koji se tretiraju kao tekst. Logical tip je posebno važan za uvjetno izvršavanje koda i pohranu true/false vrijednosti, dok complex tip omogućuje rad s kompleksnim brojevima koji su važni u određenim matematičkim i inženjerskim primjenama. Raw tip se rjeđe koristi i služi za pohranu sirovih (binarnih) podataka.

Provjera vrste podataka može se izvršiti pomoću typeof(), ili funkcijama is (is.integer(), is.character(), itd.) typeof() naredba povratno daje naziv tipa podataka (double, integer, itd.), dok je naredba koja sadrži is logička i povratno daje TRUE ili FALSE.

Tip podataka moguće je promijeniti funkcijom koja sadrži as (as.integer(), as.double(), as.character(), itd.). Ipak, preporučuje se ne koristiti promjenu tipa podataka prije nego se izvrši detaljni uvid u podatke. Naime, može se dogoditi (i događa se) da niz podataka sadrži pogrešno zapisane vrijednosti, na primjer, pojavljuje se „o“ na mjestu gdje bi trebala biti „0“, stoga je tip podataka identificiran kao character umjesto integer li double. Sama promjena tipa podataka neće riješiti ovaj problem, nego podatke treba provjeriti i urediti prije takve promjene.

Pitanja za ponavljanje

  1. Zašto je važno poznavati osnovne tipove podataka u R-u?

  2. Koji tip podataka koristimo za prikaz realnih brojeva, i kako se on zapisuje u R-u?

  3. Što se događa ako podatak koji bi trebao biti broj unesemo kao tekst (character)?

  4. Kako provjeriti tip podataka varijable u R-u?

  5. Što radi funkcija as.double() i kada biste ju koristili?

4.2 Nazivi

Pri kreiranju podataka različitih struktura, potrebno im je dodijeliti nazive. Ponekad će to biti slova, na primjer, a, b, x, y i slično. No, ako se bavite s većim brojem varijabli, onda će im biti potrebno dodijeliti nazive vezane uz pojam. Pritom se preporučuje:

  • izbjegavati dijakritike (č, ć, đ, dž, š i ž)
  • naziv ne može sadržavati razmak
  • umjesto razmaka, u nazivu ne koristiti crticu/povlaku ( - ), nego donju povlaku ( _ ), na primjer: visina_cm
  • alternativno, naziv se može zapisati kao jedna riječ, na primjer, VisinaCm ili visinacm
  • druga alternativa je koristiti točke: visina.cm

Nadalje, R je osjetljiv na velika i mala slova. To znači da Visina_cm \(\neq\) visina.cm. To ujedno znači da Visina.cm i visina.cm mogu biti dvije zasebne, različite varijable. No, važno je obratiti pozornost na to pri pozivanju varijabli, osobito u slučaju dobivanja poruka upozorenja kao što su ‘Error: object ’Visina.cm’ not found’ ili ‘#> Error in eval(expr, envir, enclos): object ’Visina.cm’ not found’.

Također, poželjno je izbjegavati nazive koje su vezani uz već postojeće funkcije u R-u. Postoji nekoliko naziva koje novi korisnici R-a često pokušavaju koristiti za svoje varijable ili objekte, ne znajući da su to već postojeće funkcije u R-u. Najčešće se radi o intuitivnim imenima poput c, t, data, mean, summary, max, min, sum, fun, df, table, array, matrix, list ili vector. Ovi nazivi su zapravo rezervirani jer predstavljaju važne funkcije u R-u - c() je funkcija za kreiranje vektora, t() za transponiranje matrice, mean() za računanje prosjeka, i tako dalje. Kad pokušamo koristiti ova imena za vlastite objekte, to može dovesti do zbunjujućih grešaka i nepredvidljivog ponašanja programa. Zato je važno od početka usvojiti naviku davanja jedinstvenih, opisnih imena svojim objektima koja ne interferiraju s ugrađenim funkcijama R-a. Na primjer, umjesto data možemo koristiti podaci ili neki specifičniji naziv poput anketa_podaci, a umjesto mean možemo koristiti prosjek.

Pitanja za ponavljanje

  1. Što bi bilo preporučljivo koristiti umjesto razmaka u nazivima varijabli?

  2. Objasnite što znači da je R „osjetljiv na velika i mala slova” u kontekstu naziva varijabli.

  3. Kako biste nazvali varijablu koja predstavlja težinu u kilogramima, a da se naziv pridržava preporučenih smjernica?

  4. Zašto je važno izbjegavati nazive poput c, t, mean, i sum za varijable?

  5. Kako možete provjeriti je li naziv koji želite koristiti već zauzet kao funkcija u R-u?

4.3 Kreiranje varijabli

Iako će se najčešće koristiti varijable iz učitanog podatkovnog okvira, korisno je znati da se varijable mogu i izraditi pridruživanjem vrijednosti. Na primjer, ako želimo kreirati varijablu a koja sadrži vrijednost 1, to je moguće napraviti na sljedeći način:

> a <- 1
> a
## [1] 1

Iako je kreiranje varijabli korisno, podatke je češće nužno i važnije definirati s obzirom na njihovu strukturu. Sjetite se i napomene kod programskih paketa, često će programski paketi iziskivati točno određen tip i strukturu podataka.

No, varijable će češće sadržavati više opažanja, to jest podataka. Onda to može izgledati ovako:

> a <- c(1, 2, 3, 4, 5)
> a
## [1] 1 2 3 4 5

Kreiranje varijabli je temeljna operacija u R-u koja omogućava pohranu podataka za kasniju upotrebu. Međutim, postoji nekoliko uobičajenih grešaka koje korisnici čine prilikom kreiranja varijabli:

  • Upotreba nedozvoljenih znakova u imenima varijabli: R ne dopušta upotrebu određenih znakova u imenima varijabli, kao što su razmaci i znakovi interpunkcije (npr. !, ?, #, %, &). Osim toga, prvi znak ne može biti broj. Greška u korištenju ovih znakova može dovesti do sintaktičkih grešaka.

  • Prepisivanje ugrađenih funkcija: Ako korisnik dodjeljuje varijabli naziv koji je već rezerviran za neku od R-ovih ugrađenih funkcija (npr. c, mean, sum), to može dovesti do neočekivanih rezultata ili grešaka u izvođenju koda. Uvijek je dobro provjeriti koristi li se ime koje je već rezervirano. To možete učiniti tako što ćete naziv započeti pisati u skripti ili chunk-u koda. Čim počnete pisati, RStudio nagađa koju funkciju želite upisati i nudi imena u lebdećem izborniku. Ako se u tom izborniku ponudi naziv kojeg ste namjeravali dati varijabli, odaberite drugi naziv.

  • Varijable koje nisu prethodno inicijalizirane: Pristup varijablama koje nisu prethodno inicijalizirane ili definirane rezultira greškom (pozivanje varijable koja ne postoji). Pokušaj pristupa varijabli koja nije definirana generira poruku o grešci.

  • Nejasna namjena varijabli zbog lošeg imenovanja: Iako ne generira tehničku pogrešku, neprecizno imenovanje varijabli (npr. korištenje imena poput x, temp, ili var1) može otežati razumijevanje koda. Takav će se pristup koristiti samo za pomoćne izračune koje korisnik nema namjeru ponavljati. Dobra je praksa koristiti opisne nazive koji jasno odražavaju namjenu varijable.

  • Neispravno pretpostavljena tipizacija: Ponekad korisnici nenamjerno kreiraju pogrešan tip podatka varijable. Na primjer, pridruživanjem brojevnih vrijednosti navodnicima (a <- “1”) varijabla a postaje znakovni niz umjesto numeričke vrijednosti. To može dovesti do naknadnih grešaka u matematičkim operacijama i analizi podataka.

  • Upotreba neodgovarajućeg pridruživanja: Iako su <- i = u većini slučajeva zamjenjivi pri pridruživanju vrijednosti, postoje situacije gdje je poželjno koristiti jedno umjesto drugog. Na primjer, <- se tradicionalno koristi za pridruživanje varijabli u globalnom prostoru imena, dok se = u pravilu koristi unutar funkcija za specifikaciju argumenata.

  • Pogreška u vektorizaciji: Pri pridruživanju više vrijednosti varijabli bez korištenja funkcije c() može doći do greške. Ispravan način za kreiranje vektora je upotreba funkcije c(), kao što je prikazano u primjeru. To nas ujedno vodi do sljedeće teme i kreiranja vektora.

Pitanja za ponavljanje

  1. Što će se dogoditi ako pokušate kreirati varijablu koristeći naziv koji sadrži razmak (npr. moj podatak <- 5)?

  2. Ako napišete a <- “10”, koji je tip podataka varijable a, i što će se dogoditi ako pokušate izračunati a + 5?

  3. Ako varijabla nije prethodno inicijalizirana, na što će R upozoriti prilikom njezinog pozivanja?

  4. Što je bolje koristiti za pridruživanje varijabli, = ili <-, i zašto? Kada biste koristili jedno u odnosu na drugo?

  5. Ako napišete b <- c(3, 5, 7), što predstavlja ova varijabla b i kako biste dobili vrijednost na drugoj poziciji?

  6. Koji znakovi nisu dozvoljeni pri imenovanju varijabli u R-u? Možete li koristiti znak # ili & u nazivu?

  7. Što će se dogoditi ako koristite c <- c(1, 2, 3) za kreiranje varijable? Možete li predložiti drugačiji naziv za ovu varijablu kako bi se izbjegla zamjena?

  8. Koja je razlika između varijable koja sadrži vrijednost a <- 1 i varijable koja sadrži više vrijednosti, kao što je b <- c(1, 2, 3)?

  9. Ako koristite a <- c(1, 2, 3, 4, 5), kako biste ažurirali varijablu a tako da joj dodate broj 6 na kraj?

  10. Kako biste provjerili postoji li naziv varijable koji je već rezerviran za funkciju u R-u?