2 Osnovni pojmovi i prvi koraci
Ovo poglavlje služi kao temeljni uvod u rad s R-om, pružajući sve potrebne informacije za početak rada, s posebnim naglaskom na praktične aspekte i osnovnu organizaciju rada. Kroz strukturiran pristup, poglavlje omogućava postupno upoznavanje s alatima i konceptima potrebnim za učinkovito korištenje R-a u analizi podataka.
Potrebno je prvo instalirati R na računalo, a potom RStudio. Najbolje je R preuzeti sa službene stranice The Comprehensive R Archive Network. Instalacija RStudija može se provesti na dva načina – preuzimanjem datoteke s Posit-a ili iz R-a (potreban je paket devtools). Prvi je način puno jednostavniji i češće korišten. Nakon preuzimanja instalacijskih datoteka, slijedite upute za instalaciju. Primjer kako postupak instalacije može izgledati dostupan je na GitHubu.
Digresija: Posit je novi naziv za tvrtku koja je prethodno bila poznata kao RStudio. Promjena imena odražava širu misiju tvrtke: pružanje podrške alatima ne samo za R, već i za Python i druge jezike korištene u analitici podataka. Posit Connect je alat koji omogućuje distribuciju, dijeljenje i hosting analitičkog sadržaja razvijenog u alatima poput R-a i Python-a. Posit Connect (ranije poznat kao RStudio Connect) dio je Positovog portfelja proizvoda i omogućava korisnicima i organizacijama lako dijeljenje analitičkih aplikacija, izvještaja, nadzornih ploča (dashboards) i API-ja s korisnicima.
Jedna od prednosti R-a jest što se radi o besplatnom, open source softverskom okruženju. Zbog toga je njegova upotreba raširena, a brojni primjeri upotrebe pojedinih paketa mogu se naći u pratećoj dokumentaciji tih paketa (dostupnoj online i preko Help opcije), online forumima te GitHubu. Pritom je CRAN (the Comprehensve R Archive Network) osnovna mrežna stranica koja funkcionira kao repozitorij sustava R, paketa i dokumentacije.
U ovom uvodu, prikazat će se osnovni pojmovi i funkcije, osnovne strukture podataka, kreiranje i definiranje tih struktura te odabiranje, dodavanje i brisanje elemenata iz različitih vrsta struktura podataka, uz osnove rada s tim strukturama podataka. Navedene su osnove koje se uobičajeno koriste tijekom pripreme podataka za analizu.
RStudio je najčešće korištena platforma za rad pri korištenju R-a. Ova platforma ne samo da omogućava uređivanje i pisanje skripti, nego također pruža i raznovrsne korisne alate (Irizarry 2019). Za početak, upoznat ćete se s osnovama rada u RStudiju.
- Gore lijevo: Script/ Source
- Gore desno: Environment
- Dolje lijevo: Console
- Dolje desno: Files/ Plots/ Packages/Help/ Viewer
Ako je prethodno otvoren novi R script (skripta), gore lijevo prikazuju se zadane naredbe. Alternativno, u tom prozoru prikazuju se korištene datoteke i objekti uz naredbu view()
ili klik na datoteke/objekte u prozoru Environment.
2.1 Okruženje ili environment
Environment predstavlja radno okruženje i tu se nalaze svi korišteni objekti (učitani podatkovni okviri (engl. data frame), funkcije, varijable, itd.) u pojedinoj sesiji. Okruženje u R-u je zapravo kolekcija parova ime/vrijednost (gdje su imena varijabli, a vrijednosti su objekti pridruženi tim imenima). Neki objekti mogu biti nevidljivi u standardnom prikazu okruženja, kao što su zatvoreni (engl. locked) objekti ili oni kreirani unutar specifičnih struktura.
Globalno okruženje je vrhovna razina u kojoj radite. Lokalna okruženja se stvaraju unutar funkcija i izolirana su od globalnog okruženja. Klikom na Global Environment dobiva se pregled svih aktivnih paketa u sesiji. U tom prozoru moguće je pratiti i utrošenu memoriju, ukloniti sve objekte iz okruženja, pregledati povijest izvršenih naredbi ili pregledati veze (ako su uspostavljane tijekom sesije). Također, dostupni su i linkovi na tutorijale o RStudiju.
Možete koristiti funkcije kao što su ls()
ili objects()
za prikaz svih objekata unutar trenutnog okruženja, odnosno rm()
za uklanjanje objekata iz okruženja kako biste oslobodili memoriju i izbjegli zabunu s imenima. Preporučuje se korištenje RStudio projekata za odvajanje različitih radnih okruženja. Svaki projekt u RStudiju ima svoje okruženje. Također, periodično provjeravajte upotrebu memorije pomoću memory.size()
i memory.limit()
na Windowsu ili gc()
na svim platformama.
Organizirajte kod u zasebne skripte prema zadatku ili funkcionalnosti kako biste izbjegli nered u globalnom okruženju.
2.2 Konzola
Console ili konzola prikazuje izvršene naredbe. Naredbe se mogu upisivati i izravno u konzolu. Druga, preferirana mogućnost, je upisivati naredbe u skriptu, pri čemu će se one prikazati u konzoli tek nakon što se te naredbe izvrše (Run ili Ctrl+Enter). Novu skriptu možete kreirati tako da u gornjem desnom uglu, ispod izbornika Files, kliknete na zeleni krug s bijelim plusom i iz padajućeg izbornika odaberete R script. Alternativno, možete koristiti prečicu Ctrl+Shift+N.
2.3 Datoteke i radni direktorij
U donjem desnom prozoru na početku svake sesije bit će prikazane datoteke (Files). Moguće ih je učitati izravno, klikom na datoteku te odabirom Import data. Nakon što su učitane, datoteke će biti pripisane objektu (najčešće je to podatkovni okvir) koji će se pojaviti u prozoru Environment. Prikazane datoteke (engl. Files) su one koje se nalaze u radnom direktoriju, pri čemu je zadana (engl. default) mapa Dokumenti (engl. Documents). Provjera za utvrđivanje koja se mapa koristi kao radni direktorij vrši se putem upisa getwd()
u konzolu ili skriptu. Ukoliko se radni direktorij želi promijeniti, to je moguće učiniti pomoću setwd()
i upisa puta do mape radnog direktorija.
> getwd()
> setwd("C:/Users/Documents/Intro")
2.4 Projekti
Pri radu u R-u jedan od jednostavnijih pristupa je kreiranje dokumenta R projekta (R project) na početku rada na pojedinom predmetu (File-> New Project->New Directory->New Project te upis naziva novog projekta; alternativno, u gornjem desnom uglu kliknete na dodavanje novog projekta). Na taj način kreira se novo radno okruženje. Ako radite na više predmeta istovremeno i želite svaki od njih sačuvati kako biste se kasnije mogli vratiti radu ili pregledu svakog od njih, korištenje ove opcije će to olakšati. Naime, pojedinom projektu pristupate putem opcije Open project, a ukoliko ste sve pohranili prije posljednjeg zatvaranja, možete nastaviti rad na tom predmetu/projektu, bez da morate počinjati ispočetka svaki sljedeći put. Osim toga, to je korisno i zato jer ćete ponekad htjeti koristiti dijelove koda/ naredbi koje ste kreirali ranije, a ova opcija to olakšava.
Ipak, treba imati na umu da je glavni izvor temeljem kojeg rekreirate radno okruženje zapravo skripta. Čak i ako okruženje nije sačuvano, pomoću skripte možete ponovo instalirati pakete i kreirati objekte.
2.5 Skripte
Skripta se može spremiti u obliku zasebnog dokumenta, R script. Ako želite upisati komentare, kao podsjetnik čemu pojedina naredba služi ili objašnjenje skupa naredbi, ispred tih komentara potrebno je upisati #. Tako spremljena datoteka može se ponovo koristiti, dorađivati i/ili ispravljati.
> # Ovo je komentar.
> # Ako su ljestve ispred teksta, R će ga ignorirati.
> # Da ispred teksta nisu ljestve, R bi javljao grešku u kodu.
Osim skripte, moguće je koristiti R dokument R Markdown. R Markdown je izvrsna opcija ako se R koristi pri sastavljanju izvješća ili dokumenata, jer podržava pisanje i uređivanje (css, latex) tekstova u kombinaciji s izvođenjem koda i izlazom dokumenta u različitim formatima (html, pdf, docx, epub, i dr.). Nova bilježnica ili R Markdown naći će se kao opcija u padajućem izborniku ispod R script. R Markdown može sadržavati kombinaciju koda, teksta i rezultata, a izlazne datoteke kreiraju se klikom na Knit u alatnoj traci prozora Source. Osim navedene kombinacije upotrebe teksta, koda i rezultata, u R Markdownu, naredbe se, u pravilu, pišu i izvršavaju u blokovima (ili engl. chunk, klik na ikonu +c za dodavanje bloka koda ili prečicom Ctrl+Alt+I). Po pitanju naglašavanja teksta, # ispred teksta na početku reda označit će tekst kao naslov poglavlja; tekst između dviju zvjezdica bit će označen ukošeno (Italics), a tekst između dvostrukih zvjezdica podebljano (Bold).
Skripta može sadržavati jednu ili niz povezanih naredbi, a naredba ili skup naredbi pokreću se klikom na Run ili prečicom Ctrl+Enter. S obzirom da je R izuzetno osjetljiv na korištenu sintaksu (velika i mala slova, tipfelere, otvaranje i zatvaranje zagrada i dr.), korištenje skripte često predstavlja uštedu vremena. Prvo, nakon upisane naredbe uz pripadajući broj retka uz naredbu prikazat će se crveni kružić s ili bez x-a ukoliko ta naredba sadrži grešku. Drugo, čak ako se naredba primijeni, a obavijest o grešci prikaže u konzoli, neće biti potrebno pretipkavanje čitave naredbe, nego samo korekcija u skripti.
Korištenje skripti u R-u je ključno za učinkovito i organizirano programiranje. Evo nekoliko savjeta kako ih pravilno koristiti:
- Organizirajte skriptu tako da svaki dio koda obavlja određenu funkciju. Ovo uključuje učitavanje podataka, transformaciju podataka, analizu podataka, i vizualizaciju.
- Redovito komentirajte svoj kod kako bi bio jasniji vama i drugima. Komentari bi trebali objasniti što određeni dio koda radi i zašto.
- Koristite smislena i opisna imena za varijable. Izbjegavajte kratka ili nejasna imena, kao što su x, df, ili temp, osim u slučaju kratkotrajnih privremenih varijabli.
- Ako određeni dio koda koristite više puta, razmislite o pretvaranju tog dijela u funkciju. To olakšava održavanje i testiranje koda.
- Umjesto da izravno upisujete putanje do datoteka ili ključne parametre, koristite varijable. To olakšava promjene i čini kod prenosivijim.
- Koristite RStudio projekte za organizaciju skripti, podataka i povezanih datoteka. To pomaže u očuvanju putanja i olakšava suradnju s drugima.
- Koristite sustave kontrole verzija poput Git-a za praćenje promjena u skriptama. To omogućava lakše vraćanje na prijašnje verzije i suradnju.
- Redovito testirajte svoj kod kako biste osigurali da radi kako je očekivano. Možete koristiti pakete poput testthat za automatsko testiranje u R-u.
- Pišite kod imajući na umu da biste ga mogli ponovo koristiti. Ako mislite da ćete kod ponovno koristiti, napišite ga tako da bude lako prilagodljiv novim situacijama i da vam bude jasan i čitak čak i ako prođe puno vremena prije nego ga ponovo upotrijebite.
- Za složenije skripte ili pakete, napišite dokumentaciju koja objašnjava kako se skripta koristi, njezine funkcije i primjere.
- Redovito ažurirajte skripte kako bi se pratile promjene u R-u i povezanim paketima.
2.6 Plots, Viewer i Help
Prikaz donjeg desnog prozora možete promijeniti odabirom Plots, Packages, Help ili Viewer. Plots prikazuje kreirane grafičke prikaze. Help nudi prikaz dokumentacije vezane uz pakete i/ili naredbe. Taj je prikaz izuzetno koristan, osobito pri korištenju novih naredbi ili pri podsjećanju kako naredbu treba zadati (ili kako točno naredba glasi) jer daje uvid u argumente koje pojedina naredba sadržava, uz mogućnosti i primjere upisa te rezultat/output s obzirom na zadane argumente. Viewer će prikazati lokalni sadržaj vezan uz korištenje mrežnih resursa (npr. izrada interaktivnog html grafičkog prikaza, iteracije pri simulacijama uz distribuciju upotrebe jezgri i radne memorije i sl.).
2.7 Paketi
Packages prikazuje popis dostupnih paketa. Paketi se mogu pozvati iz skripte ili konzole s naredbom library()
ili klikom uz željeni paket na popisu Packages. Pri radu u R-u, u pravilu, koriste se paketi. Paketi predstavljaju grupirane funkcionalnosti R-a. Svaki paket sastoji se od kompiliranog koda i skupa funkcija (ili skupina funkcija). Primjena pojedinog paketa najčešće je vezana za točno određeni, definirani format podataka. Zato je prateća dokumentacija izuzetno važna i treba steći naviku iščitavanja prateće dokumentacije.
Odabirom Packages u donjem desnom prozoru, prikazat će se popis svih osnovnih paketa koji su već instalirani. Ako želite koristiti neki od paketa koji se ne nalaze na tom popisu, potrebno ih je prvo instalirati. To se radi naredbom install.packages()
, npr. install.packages(“tidyverse“)
(Wickham et al. 2019). Da bi se paket aktivirao, potrebno ga je pozvati pomoću library()
, npr. library(tidyverse)
ili klikom na kućicu pored paketa nakon što se naziv pojavi na popisu. Prateću dokumentaciju moguće je provjeriti na dva načina. Prvi je način kliknuti na Help i u polje za pretragu utipkati naziv paketa. Drugi način je upotreba naredbe library(help=“tidyverse“)
. Postoje tisuće dostupnih paketa i njihov broj raste. Grupirane pakete po temama (područjima primjene/metodama) moguće je naći na CRANE-u, The Comprehensive R Archive Networku (Wickham and Bryan 2023). Osim toga, neki su paketi deponirani na GitHubu i drugim repozitorijima, ali se tad najčešće radi o paketima u razvojnim fazama.
Ukratko, R je ‘GNU S,’ slobodno dostupan jezik i okruženje za statističko računanje i grafiku koje pruža širok spektar modeliranja, statističkih i grafičkih tehnika: linearno i nelinearno modeliranje, statistički testovi, analiza vremenskih serija, klasifikacija, klasteriranje itd.(Ripley (2001)). Naznačeni osnovni pojmovi detaljnije će se razložiti u nastavku.
2.8 Najčešće početničke greške
Nerazumijevanje osnovnih koncepta: Mnogi početnici preskaču osnove R-a, kao što su projekti, skripte, bilježnice, tipovi podataka, strukture podataka (vektori, liste, matrice, podatkovni okviri) i osnovne funkcije. Razumijevanje ovih temelja ključno je za efikasno korištenje R-a.
Ignoriranje vektorskih operacija: R je dizajniran s naglaskom na vektorske operacije, što omogućava obradu cijelih nizova podataka bez potrebe za petljama. Neiskorištavanje ovih mogućnosti čini kod sporijim i manje efikasnim.
Prekomjerna upotreba petlji: Iako su petlje (for, while) ponekad neophodne, u mnogim slučajevima one se mogu izbjeći koristeći vektorske operacije ili primjenom funkcija iz obitelji apply (npr. apply, lapply, sapply).
Zanemarivanje postojećih funkcija i paketa: R ima veliku zajednicu i gotovo da nema statističke metode ili algoritma koji već nije implementiran. Ponovno kreiranje funkcija može dovesti do gubitka vremena i veće vjerojatnosti pogreške.
Nepravilno upravljanje radnim direktorijem: Početnici često zanemaruju postavljanje radnog direktorija ili nepravilno koriste relativne i apsolutne putanje, što može dovesti do grešaka u učitavanju i spremanju podataka.
Zanemarivanje vizualizacije podataka: Vizualizacija je ključna za razumijevanje podataka. Zanemarivanje paketa poput ggplot2 za izradu grafikona često je propuštena prilika za bolje razumijevanje i prezentaciju rezultata.
Ignoriranje upozorenja i poruka o greškama: Poruke o greškama i upozorenja postoje s razlogom. Ignoriranje ovih poruka može dovesti do ozbiljnih problema u kodu koje može biti teško otkriti kasnije.
Nepravilno upravljanje verzijama: Ako se ne koriste sustavi za upravljanje verzijama poput Git-a, praćenje promjena i suradnja s drugima mogu biti otežane.
Zanemarivanje važnosti ponavljanja analize: Ako se ne dokumentiraju koraci analize, kasnije ponavljanje te analize, kao i provjera rezultata, mogu biti otežani.