1 Uvod
1.1 Što je programski jezik R?
1.1.1 Općenito o R-u
Programski jezik R proizašao je iz programskog jezika S, razvijenog za potrebe Bell Telephone Laboratorija u vlasništvu AT & T korporacije. Zamišljen je kao interni alat za statističku analizu. Osnovna filozofija jezika S (koju je naslijedio i programski jezik R) bila je domenska orijentiranost - tj. olakšavanje posla podatkovnim analitičarima bez potrebe za prilagođavanjem konvencijama tradicionalnih programskih jezika. Jezik S je kroz 80.-te i 90.-te dosegnuo značajnu popularnost u krugovima poslovnih analitičara i statističara, no dostupan samo kroz komercijalnu varijantu nazvanoj S-PLUS.
Programski jezik R nastao je na sveučilištu u Aucklandu (NZ) po uzoru na S, a 2000. objavljuje se pod GNU licencom otvorenog koda.
Standardna distribucija R programskog jezika sastoji se od:
- “jezgre” R-a, sa temeljnim funkcijama i tzv. base paketom koji omogućuje osnovnu funkcionalnost
- kolekcijom dodatnih paketa (“osnovni” - base i “preporučeni” - recommended) za upravljanje podacima, vizualizacije i statističke analize
Ovdje ne treba zanemariti izvrsnu integraciju R-a sa bogatim repozitorijem paketa zvanom CRAN (Coprehensive R Archive Network) koja omogućuje brzu i jednostavnu instalaciju bilo kojeg paketa iz navedenog repozitorija nakon čega on postaje dio lokalne R instalacije. Budući da je za jezik R specifičan iznimno jaki utjecaj R zajednice na razvoj novih paketa, često se nakon pojavljivanja novih eksperimentalnih metoda i pristupa podatkovne analize vrlo brzo na CRAN-u mogu pronaći paketi koji iste implementiraju, a također treba spomenuti i snažni i kontinuirani entuzijazam R zajednice za razvoj poboljšanja postojećih elemenata R-a koji ublažavaju ili uklanjaju veliki broj uočenih manjkavosti jezika. R se zbog toga često zna uspoređivati sa “uradi sam” projektom gdje korisnik, nakon upoznavanja sa isporučenim “tvorničkim” komponentama (u ovom slučaju temeljnim funkcijama i paketima), počinje prilagođavati svoju razvojnu okolinu odabirom paketa koji točno odgovaraju njegovim potrebama i preferencama. Kreativnost i fleksibilnost u korištenju R-a se smatra njegovom velikom prednošću, iako rezultira određenom neformalnošću i liberalnim pristupom programiranju koji nije omiljen korisnicima naviknutim na stroge i formalne programske okvire sa jasnim skupom smjernica i pravila koja se moraju slijediti.
Usprkos iznimno velikoj prihvaćenosti jezika R za podatkovne analize te mnoštvu opcija koje nudi korisniku, potrebno je odmah u početku biti svjestan i njegovih određenih ograničenja:
R jako intenzivno koristi radnu memoriju što je dugo vremena smatrano ozbiljnim ograničenjem; porastom kapaciteta modernih hardverskih sustava ovo ograničenje je danas puno prihvatljivije, a također su se pojavili brojni paketi koji racionaliziraju korištenje memorije. Ipak ostaje činjenica da R brzo “pojede” RAM našeg računala, iako je to često i rezultat nepažnje ili neznanja programera koji nije dovoljno dobro usvojio “R-ovski” način programiranja.
R je prilično nekonvencionalan tako da je krivulja učenja inicijalno nešto strmija, pogotovo za programere naviknute na standardne konvencije drugih programskih jezika. S druge strane, ako se gleda dugoročno, programiranje u R-u je prilično jednostavno budući da je većina kompleksnih zadataka apstrahirana u visokorazinske funkcije koje transparentno obavljaju operativne poslove niske razine. Često se kaže da je R više orijentiran cilju kojeg želimo postići a manje detaljima oko puta kojim do njega stižemo.
R nije “brzi” jezik; iako se radi o jeziku koji očekivano radi nad velikim skupovima podataka, R nije optimiziran za brzinu izvođenja, pa čak ni za višedretvenost; iako je veliki trud uložen da se gotovo sve ključne rutine implementiraju u C-u i da se spriječe znatna usporavanja, a postoji i niz paketa koji omogućuju višedretveno izvođenje R programa, i dalje stoji činjenica da R nije dizajniran s ciljem da se izvršava što je brže moguće; ukoliko je brzina prioritet, često je potrebno tražiti alternativna rješenja - zbog čega se često zna reći da je R primarno istraživački jezik, ne produkcijski.
R je prvenstveno namijenjen za interaktivni rad, tj. izvođenje niza strojnih instrukcija koje se dinamički upisuju i izvode uz pomoć programske konzole. Ovo je prilagođeno standardnom procesu analize podataka gdje analitičar može učitavati podatke, čistiti ih, transformirati, razvijati modele, testirati i sl. uz konstantnu povratnu informaciju od računala, mogućnost pregleda međurezultata, izmjene procesa prema trenutnim saznanjima i sl.
Ovo ne znači da se u programskom jeziku ne može programirati na klasičan “proceduralni” način, razvojem algoritama enkapsuliranih u funkcije koje onda nakon pozivanja automatski obavljaju svoje zadatke, ali činjenica jest da se učinkovitost R-a upravo odražava u interaktivnom radu. Ovaj princip se prenosi i na učenje R-a; programski jezik R puno se lakše uči interaktivnim pristupom uz izvršavanje konkretnih zadataka, eksperimentiranjem s podatkovnim skupovima, dostupnim metodama i sl. nego “klasičnim” pristupom izrade programskih skripti koje implementiraju neke niskorazinske poslove.
1.1.2 Alternative jeziku R
Programski jezik R je popularno, ali ne i jedino rješenje za interaktivnu analizu podataka i statističko programiranje. U nastavku ćemo dati kratki pregled nekih popularnijih tehnologija i rješenja koje se danas koriste u ovu svrhu, uz kratku usporedbu i osvrt na prednosti i nedostatke u usporedbi sa onim što nudi jezik R.
SAS i SPSS – SAS (Statistical Analysis System, razvijen od strane SAS Institute) i SPSS (Software Package for Statistical Analysis, razvijen od strane IBM-a) su dva različita softverska paketa koje stavljamo pod istu stavku prvenstveno zato što se radi o komercijalnim alatima, tj. alatima koji za svoju punu funkcionalnost zahtijevaju plaćanje licence. Isto tako, SAS i SPSS se relativno lako uče a svoju funkcionalnost u velikoj mjeri zasnivaju na pomno dizajniranim korisničkim sučeljima. Ovi alati naglasak stavljaju na učinkovitost i odlična su opcija za velike tvrtke koje traže konzistentno, robusno rješenje za svoju analitiku i kojima ne smeta komercijalna priroda takvih rješenja.
Weka i Orange – Weka (Waikato Environment for Knowledge Analysis, razvijen od strane sveučilišta Waikato na Novom Zelandu) i Orange (alat za dubinsku analizu podataka razvijen na sveučilištu u Ljubljani) su besplatan softver za eksploratornu analizu podataka i dubinsku analizu koji svoju funkcionalnost zasnivaju na relativno jednostavnim grafičkim sučeljima i vizualnom pristupu programiranju. Ova rješenja vrlo su dobra za korisnike koji nisu previše zahtjevni glede fleksibilnosti i kompleksnosti svojih analiza jer na vrlo pristupačan i jasan način omogućuju provedbu definiranih koraka procesa analize. To ne znači da se u ovim alatima ne mogu raditi i kompleksnije analize, samo da su oni ipak prilagođeniji analizama kroz predefinirane funkcionalnosti pruženog grafičkog sučelja.
Python (Numpy / Pandas / Scikit) – u zadnjih nekoliko godina upravo je Python najozbiljniji konkurent jeziku R, prvenstveno zbog činjenice da je Python sam po sebi vrlo popularan programski jezik koji za potrebe analize podataka koristi pakete s vrlo sličnim pristupom procesu analize onom kojeg koristi i jezik R. Rasprava o tome koji jezik odabrati je vrlo česta u polju znanosti o podacima, obično bez jasnog konačnog zaključka. Lako s uvjeriti da su razlike zapravo u nijansama - dok je R snažno domenski orijentiran i veći naglasak stavlja na lakoću i jednostavnost korištenja uz široku paletu dostupnih paketa sa preklapajućim funkcionalnostima kako bi korisnik mogao odabrati onaj koji mu najviše odgovara, Python naglašava rigidnu formalnu strukturu i princip “za jedan posao jedan način obavljanja”. Stoga bi se moglo reći da je R nešto pogodniji za “istraživanje podataka” dok je prednost Pythona lakši razvoj i integracija analitičkih modula u nekom produkcijskom okruženju, pogotovo ako je navedeno okruženje već izvedeno u Pythonu. No snažnim razvojem oba jezika i međusobnim praćenjem funkcionalnosti i ova navedena razlika postaje sve manje relevantna - danas više nije problem integrirati R skripte u postojeće sustave neovisno o platformi na kojoj su izvedeni, a u Python zajednica razvija svoje inačice popularnih paketa iz R-a koje vjerno preslikavaju njihovu funkcionalnost. U konačnici se može reći da inicijalni odabir između ove dvije alternative i nije toliko bitan - pristup kojeg koriste je toliko sličan a praćenje funkcionalnosti toliko izraženo da se učenjem jednog jezika svladava većina bitnih koncepata iz drugog tako da se podatkovni znanstvenici često na kraju odlučuju na svladavanje oba jezika, kako bi se lako prilagodili velikom broju okruženja u kojima moraju provoditi svoje analize.
1.2 Instalacija programske podrške
Instalacija programske podrške za jezik R je prilično jednostavna, pogotovo ako se kao platforma koristi preporučeno razvojno sučelje RStudio. Ovo nije jedina opcija - jedna od popularnih alternativa jest i višejezična platforma Jupyter Notebook koja nudi vlastitu podršku za R. Čitateljima se dugoročno preporučuje istraživanje svih dostupnih opcija i konačni odabir onog sučelja koje osobno procijene najboljim za svoje potrebe, no ovaj udžbenik će se usredotočiti na RStudio ponajviše zbog jasnog, preglednog sučelja, lake instalacije i vrlo bogate podrške za različite funkcionalnosti - od instalacije novih paketa, lakog dohvaćanja dokumentacije, prikaza vizualizacija do stvaranja i objave izvještaja. Radne bilježnice o kojima će više riječi biti u nastavku uglavnom pretpostavljaju da ste odabrali sučelje RStudio.
Za uspješno postavljanje razvojne platforme potrebno je instalirati dvije stvari
- distribuciju jezika R
- razvojno sučelje RStudio
Preporučuje se koristiti najnovije dostupne inačice. U trenutku pisanja ovog dokumenta to su R 3.3.2 i RStudio 1.0.136. Ukoliko se ove inačice razlikuju od one koje se nalaze na vašem računalu, vjerojatno neće biti problema ukoliko su brojevi inačica viši od navedenih; u suprotnom preporučuje se njihova nadogradnja.
U nastavku će se opisati postupak za instalaciju navedenog softvera na operacijski sustav Microsoft Windows. Ukoliko radite na nekom od drugih operacijskih sustava, kao što je neka od Linux distribucija ili Mac OS procedura je nešto drugačija, no i dalje ne previše složena - dovoljno je pratiti upute na web stranicama spomenutim u nastavku koje su orijentirane platformi koju koristite.
Kako bi pronašli spomenuti softver u tražilicu upišite sljedeće pojmove:
- download R
- download RStudio
U oba slučaja dobiti ćete stranice sa poveznicama na izvršne datoteke koje morate pokrenuti kako bi se softver instalirao na vaše računalo. U slučaju jezika R to može biti datoteka R-3.3.2-win.exe (točni brojevi se mogu razlikovati). Kod sučelja RStudio možete vidjeti više opcija - odaberite besplatnu “desktop” inačicu. Komercijalne inačice imaju neke dodatne funkcionalnosti koje su većinom orijentirane uporabi u profesionalnim, višekorisničkim okruženjima te nisu bitne za uobičajeni rad.
Izvršne datoteke možete pokrenuti i pustiti čarobnjaka da instalira sve potrebne komponente na vaše računalo. Preporučuje se prihvatiti sve nazivne opcije osim mape instalacije - umjesto podmape “Program Files” bolje je instalirati R direktno u osnovnu mapu (npr. “C:\R\R-3.3.2”). Na ovaj način biti će lakše pronaći trenutno instaliranu inačicu i eventualno kasnije ažurirati. Iz istih razloga preporučuje se RStudio instalirati u mapu “C:\R\RStudio”. U slučaju da niste mogućnosti ili ne želite odabrati ove mape, možete definirati neke druge ili zadržati nazivne opcije - ovaj izbor ne bi u konačnici trebao bitno utjecati na daljnji rad.
Nakon instalacije sučelja RStudio dovoljno je isto jednostavno pokrenuti uz pomoć stvorene kratice na radnoj mapi (ili alternativno, uz pomoć izvršne datoteke RStudio.exe u odabranoj mapi za instalaciju). Nakon pokretanja aplikacija bi trebala izgledati slično sljedećoj slici:
Slika 1.1: Izgled sučelja RStudio
Ukoliko je došlo do nekih problema, provjerite da li ste ispravno proveli sve navedene korake instalacije. U nastavku ćemo se pozabaviti detaljima prikazanog sučelja.
1.3 Pregled razvojnog sučelja RStudio
Pogledajmo sučelje RStudio. Vidimo da je podijeljeno na tri prozora - lijevi dio je “radni” i u njega upisujemo programski kod. S desne strane se nalaze pomoćni prozori koji prikazuju različite stvari, ovisno o odabranoj kartici; u gornjem desnom dijelu između ostalog možemo vidjeti što se trenutno nalazi u našoj radnoj okolini (koja je na početku prazna) te povijest naredbi koje smo izvršavali. Donji dio služi za prikaz dokumentacije, datoteka u radnoj mapi, instaliranih paketa, vizualizacija i sl.
1.3.1 Interaktivna konzola
Vratimo se na lijevi dio sučelja. Ovdje se zapravo radi o tzv. “interaktivnoj konzoli”. Naime, po svojoj prirodi R je tzv. “interpreterski jezik” u smislu da se naredbe odmah interpretiraju i izvršavaju. Iako je moguće izrađivati i veće skripte koje se onda izvršavaju “u komadu”, rad sa jezikom R vrlo često se svodi na princip naredba - odgovor. Upravo zbog toga govorimo o “interaktivnoj programskoj analizi podataka” - analitičar “programira” upisivanjem naredbi te u svakom trenutku može proučiti dobivene međurezultate i odlučiti se na daljnje korake.
Prikažimo kako radi interaktivna konzola. Uz pomoć tipkovnice možemo utipkati jednostavan matematički izraz - npr. 3 + 2
i stisnuti tipku ENTER. Vidimo da će nam R odmah pružiti rezultat - možemo ga koristiti i kao kalkulator!
Za matematičke izraze koje nije jednostavno “utipkati” moramo koristiti funkcije. Tako npr. drugi korijen možemo izračunati uz pomoć funkcije sqrt()
. Pokušajmo u konzolu utipkati sqrt(10)
i stisnuti ENTER. R nam opet odmah prikazuje rezultat. U ovom trenutku zaslon bi nam trebao izgledati otprilike kao na sljedećoj slici.
Slika 1.2: R kao kalkulator
Jedan od problema ovakvog načina korištenja R-a jest taj što nam se miješaju naredbe i rezultati, a povijest niza naredbi postaje sve teže vidljiva kako se korištenjem konzole spuštamo sve “niže i niže”. Isto tako, ako iz nekog razloga naredba koju izvršavamo rezultira greškom koju pokušavamo ispraviti, konzola vrlo brzo postaje “prljava” budući da se miješaju korektni pozivi sa izvještajima o greškama čime bilo kakva složenija procedura koju želimo provesti postaje “rastrgana” i nepregledna. Zbog toga analitičari vrlo često koriste tzv. “R skripte” koje omogućuju da vizualno izdvojimo naredbe koje želimo izvršiti od same konzole, ali i dalje uz mogućnost da ih lako upišemo u konzolu, slijedno izvršimo i pogledamo rezultat.
1.3.2 Pisanje R skripti
Na alatnoj traci odaberimo File -> New File -> R Script
(ili stisnemo kombinaciju tipaka CTRL + SHIFT + N).
Vidimo da se “radni dio” na lijevoj strani razdvojio na dva dijela. Gornji dio predstavlja prostor za našu “skriptu” - zapravo niz naredbi koje želimo izvršiti - dok interaktivna konzola sada zauzima donji dio radne plohe. Ukoliko želimo, možemo pomicanjem granice promijeniti veličinu ovih (a i ostalih prozora), no za sada je bitno da imamo pregled i skripte i konzole.
Upišimo dvije naredbe u prozor za pisanje skripte - prva neka bude print("Pozdrav!")
a ispod nje opet jednostavan matematički izraz 3 + 4
. Vratimo kursor na prvi redak i stisnimo kombinaciju tipki CTRL + ENTER. Ukoliko smo ispravno pratili navedene korake, naredba na mjestu koje se nalazio kursor automatski će se preslikati u interaktivnu konzolu i izvršiti. Kursor će sada biti na mjestu sljedeće naredbe koju također možemo izvršiti sa CTRL + ENTER. Zaslon bi sada trebao izgledati slično sljedećoj slici.
Slika 1.3: R skripta
Ovo je zapravo uobičajeni način rada u jeziku R - u prostor za skripte upisujemo naredbe koje potom izvršavamo njihovim automatskim preslikavanjem u konzolu. Ako nešto ne štima s naredbom, lako ju preinačimo i ponovo izvršimo. Ukoliko želimo izvesti blok naredbi, odaberemo ih povlačenjem miša i izvršimo kombinacijom tipaka CTRL + ENTER. Skripte možemo proširiti komentarima (koji počinju znakom #
kojeg R interpretira kao “ovaj redak ignoriraj”), a na kraju rada spremiti pod odabranim imenom na čvrsti disk.
No možemo otići i korak dalje. Iako su R skripte sasvim adekvatne za ugodan rad u jeziku R, postoji dodatna tehnologija koja nam omogućuje još veću fleksibilnost u radu sa programskim jezikom R - R Markdown.
1.3.3 R Markdown
Pisanje R skripti vrlo je slično klasičnom poimanju “programiranja” - pišemo programske naredbe koje se u pravilu izvršavaju slijedno te kojima opcionalno dodajemo komentare u svrhu dokumentacije. No budući da je rad u R-u vrlo često interaktivne prirode te da se kao završni korak neke analize podataka obično očekuje oblikovanje izvještaja koji će na adekvatan način prikazati dobivene rezultate, sučelje RStudio podržava tehnologiju koja omogućuje učinkovitu kombinacije programiranja i strukturiranog dokumentiranja na principu “interaktivne bilježnice”“; analitičar može pisati”čisti" tekst, opcionalno sa formulama, slikama te izmjenama veličine i prirode tekstualnog fonta, da bi potom u takav tekst “ugradio” izvršivi programski kod zajedno sa njegovim rezultatima. Tehnologija koja ovo omogućuje je tzv. R Markdown, koji je relativno nedavno proširen novim konceptom nazvanim R Notebook.
Rad ove tehnologije najlakše je prikazati preko primjera - u alatnoj traci odaberimo File -> New File -> R Markdown...
te u idućem prozoru odaberimo proizvoljni naslov (npr. Proba
), opcionalno ime autora te jednu od opcija za konačni oblik izvještaja (preporučeno HTML zbog najmanje ovisnosti o dodatnim paketima).
Za razliku od R skripte, R će kod novog R Markdown dokumenta stvoriti “popunjeni” dokument. Ovo je izvedeno na ovaj način iz jednostavnog razloga da korisnik dobije predložak koji istovremeno služi i kao podsjetnik te kojeg onda lako izmjeni prema svojem nahođenju. Mi ćemo za naše potrebe obrisati veći dio ovog predloška - sve poslije inicijalnog zaglavlja, tj. ispod druge pojave znakova ---
.
Potom možemo ispod napisati bilo kakav tekst. Znakovima #
, ##
, ###
itd. možemo postaviti naslov određene kategorije (to sada nisu komentari, jer ovo zapravo nije R kod!), dok znakovima *
i **
ispred i iza odabranih riječi odabiremo nakošeni ili masni otisak u konačnom izvještaju. Ovo je tzv. čisti “markdown”, tj. običan tekst koji se uz pomoć dodatnih alata može pretvoriti u oblikovani tekst, ukoliko želimo.
Kada želimo u ovaj naš “izvještaj” ugraditi programski kod, moramo stvoriti tzv. “isječak” (engl. chunk). To možemo učiniti odabirom Insert -> R
na alatnoj traci ili kombinacijom tipaka CTRL + ALT + I.
Uočite da isječak počinje i završava posebno odabranim nizom znakova - tri “apostrofa nalijevo” (engl. backticks). Isto tako, početak isječka u vitičastim zagradama opisuje parametre isječka, od čega je najvažniji programski jezik kojeg ćemo koristiti. U ovom udžbeniku ćemo gotovo isključivo koristiti jezik R, iako je moguće koristiti i druge jezike ukoliko su oni instalirani na platformi na kojoj je pokrenut RStudio.
Isječak koda ponaša se isto kao i standardna R skripta - možemo upisivati naredbe i izvršavati ih. Razlika je samo u tome što - ukoliko želimo - rezultate možemo vidjeti i odmah u samom R Markdown dokumentu. Ako nam ova opcija smeta možemo ju isključiti (klik na zupčanik u alatnoj traci i odabir Chunk output in console
) no u pravilu nam odgovara da se rezultat ugradi u dokument kako bi naknadno mogli ponovo pregledavati rezultate prethodnih isječaka.
Ako smo pratili upute, zaslon bi mogao izgledati slično sljedećoj slici:
Slika 1.4: R Markdown dokument
Ukoliko želimo, možemo pokušati stvoriti “izvještaj” od trenutnog dokumenta. Prvo ga moramo spremiti pod određenim imenom (npr. Proba.rmd
), a potom možemo kliknuti na gumb Knit
koji će dokument iz čistog teksta pretvoriti u HTML datoteku.
R Markdown dokumenti su puno moćniji nego što se možda daje naslutiti do sada prikazanim elementima. Isječcima možemo dodavati niz parametara kako bismo utjecali na njihovo ponašanje. Izlazni oblik može biti PDF, DOCX ali i drugi oblici kao što slajdovi raznih tehnologija, knjige namijenjene mobilnim uređajima, interaktivna Web aplikacija i sl. Udžbenik kojeg čitate zapravo nije ništa drugo do niz RMD datoteka pretvoren u adekvatni oblik kojeg trenutno koristite. Kao što ćemo objasniti u sljedećem poglavlju, RMD datoteke su također i glavni način na kojeg ćete moći na interaktivan način pratiti ovaj udžbenik i isprobavati primjere i zadatke koje slijede. Univerzalnost i fleksibilnost tehnologije R Markdown je iznimno velika, čemu u prilog govori i njezina velika popularnost u R zajednici.
1.4 Kako koristiti ovaj udžbenik?
Osnovna ideja ovog udžbenika jest “učenje kroz primjenu”. Zbog toga se u lekcijama u nastavku neće koristiti previše primjera, već se čitatelja potiče da svaki novi koncept usvoji kroz rješavanje niza lakših i težih zadataka.
Svako poglavlje koje slijedi ima prateću “radnu bilježnicu”. Jednostavno rečeno, radi se o RMD datoteci koja sadrži sve primjere iz zadatke iz ovog udžbenika, popraćene sažetim tekstom radi lakšeg snalaženja i referenciranja na koncepte koji se obrađuju. Osnovna ideja je da čitatelj paralelno čita udžbenik i rješava radnu bilježnicu, gledajući rješenje zadatka tek nakon što ga samostalno riješi unutar programskog alata.
Poneki zadaci zahtijevati će jednostavno uklanjanje znaka #
(koji označava “komentar”) sa početka naredbe te njezino izvršavanje. Usprkos trivijalnom pristupu, na ovaj način se ipak jasnije potiče čitatelja za samostalno isprobavanje naredbe, umjesto da samo pogleda njezin rezultat. Drugi zadaci zahtijevati će nešto veći angažman. Konačno, nakon svake lekcije nalazi se niz “Zadataka za vježbu” uz koje se neće nalaziti rješenje te koji će predstavljati svojevrsnu provjeru svih danih koncepata lekcije. Čitateljima se snažno preporučuje rješavanje svih primjera i zadataka prije prelaska na iduću lekciju, budući da lekcije koje slijede pretpostavljaju dobro usvojeno znanje svih do tada obrađenih tema.
Naravno, udžbenik je moguće čitati i bez navedenog “interaktivnog” pristupa. Rješenja uz zadatke otkrivaju ispravnu metodu pristupa problemu, a većina naredbi popraćena je ispisom kojeg bi korisnik dobio na zaslonu njihovim izvršavanjem. Usprkos tome, stav autora udžbenika jest da se programski jezici ne mogu učiti čitanjem te da se dodatni trud isprobavanja svih, pa čak i najjednostavnijih koncepata, u konačnici višestruko isplati.
Upoznajmo se pobliže sa konceptom radnih bilježnica. Prvo je potrebno pronaći i otvoriti radnu bilježnicu koja odgovara lekciji koju čitate. Nju je lako prepoznati prema odgovarajućem broju lekcije - radna bilježnica za ovu lekciju nosi naziv 01_Uvod_RB.Rmd
. Preporučuje se da sve radne bilježnice na kojima namjeravati raditi kopirate negdje na lokalno računalo zajedno sa svim pratećim datotekama koje se nalaze u istoj mapi ako ih ima.
Kao što je rečeno, radna bilježnica će u pravilu sadržavati sav programski kod lekcije na koje se odnosi, ali samo dio teksta koliko je dovoljno za lakše snalaženje. Ukoliko ovaj tekst čitate direktno iz radne bilježnice, a ne kao dio udžbenika, možete vidjeti da nedostaje cijeli prethodni dio lekcije; to je zato što se uvodni koraci opisani u njemu tiču koncepata koje je potrebno usvojiti prije korištenja radne bilježnice. Ako ih niste prošli, preporuka je da se vratite i prođete ih te potom nastavite sa primjerima i zadacima koji slijede.
Radne bilježnice razlikuju Primjere i Zadatke. Primjere je u pravilu potrebno samo izvršiti. Zadaci s druge strane očekuju izvjesne preinake ili unos novog programskog koda. Kao što je rečeno, udžbenik će postaviti daleko veći naglasak na zadatke.
Primjer može izgledati ovako:
Primjer - nekoliko jednostavnih naredbi R programskog jezika
3+2 #zbrajanje
log(10) # prirodni logaritam!
log10(10) # ovo je logaritam baze 10! Usput, komentare pišemo znakom "#"
sin(0.5 * pi) # pi je jedna od ugrađenih konstanti
## [1] 5
## [1] 2.302585
## [1] 1
## [1] 1
Naredbe iz primjera možete izvršiti pojedinačno, ili cijeli isječak odjednom kombinacijom tipaka CTRL + SHIFT + ENTER. Nikakve preinake koda nisu nužne (iako često nije loše eksperimentirati sa danim naredbama!).
Zadaci s druge strane uvijek traže određenu - makar minimalnu - intervenciju.
Zadatak 1.1 - naredbe za provjeru i izmjenu radne mape
# izvršite sljedeće naredbe uklanjanjem znaka komentara
#getwd() # mapa u kojoj trenutno radimo
#setwd(".") # ovdje možemo navesti novu radnu mapu ukoliko želimo
Zadatak će se često odnositi na upravo uvedeni koncept. Npr. zgodno je za napomenuti da, iako jezik R podržava operator =
za pridruživanje vrijednosti nekoj varijabli, preporučuje se korištenje operatora <-
u tu svrhu koji je nešto više “R-ovski”. Također, uočimo da R podržava tzv. autoprint, tj. uvijek će ispisati rezultat zadnje naredbe na zaslon. To znači da ako u isječku stvaramo novu varijablu x
te ju želimo ispisati na zaslon, ne moramo kao zadnju naredbu staviti print(x)
već je dovoljno staviti samo x
. Isprobajmo ovo u zadatku.
Zadatak 1.2 - R-ovski operator pridruživanja
Sada kada smo se dobro upoznali sa radnom platformom, možemo početi sa učenjem osnovnih elemenata programskog jezika R.
Programirajmo u R-u by Damir Pintar is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
Based on a work at https://ratnip.github.io/FER_OPJR/