R je integrované prostredie pre analýzu dát, štatistické a matematické výpočty a produkciu grafiky v tlačovej kvalite. Áno, R je programovací jazyk, ktorý obsahuje podmienky, cykly, užívateľom definované funkcie, a nástroje pre vstup a výstup dát. To však neznamená, že ten, kto ho chce používať, musí vedieť programovať. Stačí, ak niekto vie, akú informáciu chce zo svojich dát získať a po dvoch-troch príkazoch má na obrazovke grafický výstup a tabuľku so základnou štatistikou. Na druhej strane komu nestačia vstavané funkcie, môže si naozaj jednoducho napísať vlastné, R spraví presne to čo mu poviete.
R je výsledkom GNU úsilia a ide o implementáciu štatistického jazyka S, ktorý bol vyvinutý v Bell Laboratories pánmi R. Beckerom, J. Chambersom a A. Wilkesom. Prostredie R je dostupné ako Free Softvare pod GNUGeneral Public License. Je dostupný pre väčšinu systémov typu UNIX/Linux, systémy Macintosh a tiež pre systémy rodiny Windows.
Ak niekoho zaujíma veľkosť databázy, s ktorou R ešte dokáže efektívne pracovať, tak v manuáloch sa uvádza matica so 100 000 riadkami a 20 stĺpcami. To by mohlo pre začiatok stačiť. Neskúšal by som to však z jedného dôvodu. Základná pracovná jednotka, s ktorou R pracuje, sa volá objekt. Ide jednoducho o tabuľku, alebo iný súbor dát. Objektov môže by v jednom R sedení niekoľko (napr. tabuľka, kde je nadmorská výška bodu, jeho sklon, pH pôdy v bode, obsah humusu v bode, alebo tabuľka s mestami a vývojom počtu obyvateľov v nich za roky 1867–2000) a pri každom spustení eRka, sa tieto objekty natiahnu do pamäte RAM. Aj keď od verzie 1.2.0 existuje účinný „garbage collector“, ktorý automaticky alokuje veľkosť pamäte potrebnej pre objekty, každá ďalšia operácia produkuje nové dočasné objekty a kapacita RAM nemusí stačit. Nech vás to neodradí, 64–128 MB RAM však pohodlne stačí aj pre analýzy pracujúce s veľkým počtom pozorovaní.
Prvé sedenie v eRku.
Poďme si teraz ukázať príkladové R sedenie. Predpokladajme, že máme eRko nainštalované na našom počítači, alebo serveri. Spustíme ho príkazom:
[rado@templar rado]$ R |
Objaví sa príkazová konzola. Systém vypíše uvítacie hlášky a čaká na príkazy promptom:
> |
Z hlášok sa dozvieme, akú verziu používame, ako vyvolať nápovedu, a čo sa týka syntaxe tiež že príkazy (funkcie) v eRku majú nasledovnú formu:
> prikaz() |
Pozornejší hneď zistili, že sa použil príkaz
> ls() |
ktorý vypíše zoznam objektov v danom R sedení. Sedenie sa končí príkazom:
> quit() Save workspace image? [y/n/c]: |
príkaz ukončí sedenie a spýta sa nás či chceme uložiť image. Treba zvoliť „y“. Systém tak vytvorí v adresári, z ktorého sa spustilo eRko, dva súbory:
- .RData -v tomto súbore sú uložené všetky objekty, ktoré sa v predošlom sedení používali.
- .Rhistory – tu je uložená história príkazov.
Keď sa nabudúce spustí eRko z toho istého adresára, natiahnu sa všetky objekty (dáta) zo súboru .RData a zoznam príkazov z .Rhistory. Z toho vyplýva, že pri odlišných projektoch je lepšie spúšťať eRko z nového adresára, aby sme aj po piatom spustení vedeli, čo kde máme. Pozrime sa na dalšie R sedenie, vytvorme nový objekt, vypočítajme jednoduché štatistiky, a prikážme eRku vygenerovať grafický výstup.
[rado@templar R]$ R > 12+14 [1] 26 > r <- 22 > obsah.kruhu <- pi*r^2 > obsah.kruhu [1] 1520.531 |
Čo sme spravili: Najprv sme zadali v prompte operáciu súčtu, systém vypísal výsledok. Potom sme objektu „r“ priradili hodnotu „22“, a objektu „obsah.kruhu“ zasa výsledok matematickej operácie. Po vypísaní mena objektu do promptu eRka, sme získali výpis objektu, teda obsah kruhu. Už vieme, že hodnoty sa objektom priradzujú cez operátor „<-“, alebo „->“ ich obsah získame zasa zadaním mena objektu. Vieme tiež, že eRko pozná konštantu „pi“. Doteraz sme pracovali len s objektmi, ktoré mali len jeden člen (číslo, reťazec). Takto vygenerujeme objekt s vyšším počtom členov:
> r1 <- c(1,2,3,4,5,6,7) > r1 [1] 1 2 3 4 5 6 7 > r2 <- c(8:14) > r2 [1] 8 9 10 11 12 13 14 |
Obidva takto vytvorené objekty sa nazývajú vektor. Vektor „r2“ má rozsah od 8 do 14 (to vďaka dvojbodke pri jeho definovaní). Skúsme teraz oba vektory sčítať a potom vytvoriť nový vektor, ktorý bude obsahovať hodnoty vektorov „r1“ a „r2“. Všimnite si rozdiely.
> r3 <- r1+r2 > r3 [1] 9 11 13 15 17 19 21 > r4 <- c(r1,r2) > r4 [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Použijme teraz vektor „r4“ ako vektor polomerov, vypočítajme obsah kruhu a závislosť zobrazme graficky.
> ss <- pi*((r4)^2) > ss [1] 3.141593 12.566371 28.274334 50.265482 78.539816 113.097336 [7] 153.938040 201.061930 254.469005 314.159265 380.132711 452.389342 [13] 530.929158 615.752160 > plot(ss ~ r4, pch=16) |
Príkazom „plot“ sme vykreslili závislosť obsahu kruhu od veľkosti polomeru. eRko má oveľa silnejšie grafické možnosti, na úvod by však toto mohlo stačiť. Len pripomeniem, že graf, ktorý vidíte sa dá malým trikom uložiť do eps súboru a potom už nič nebráni, aby sa vložil do LaTeXovského dokumentu.
Nabúdúce si ukážeme, ako sa eRko inštaluje, vrátane prídavných balíkov, povieme si niečo viacej o vektoroch, naučíme sa ako importovať dáta v rôznych formátoch, a nebúde chýbať grafika. Skúste teraz vyskúšať príkaz:
> summary(r4) |
Celkom dobré, čo poviete?