R používa funkcie na vykonanie operácií. Na to aby sme volali funkciu napr. funkcmeno , tak musíme napísať funkcmeno (vstup1, vstup2), kde vstupy alebo argumenty povedia R ako majú spustiť funkciu. Napríklad pre vytvorenie vektora čísiel musíme použiť funkciu c() (pre concatenate - zlúčenie, zreťazenie). Všetky čísla vo vnútry zátvoriek sú spojené spolu. Nasledovný príkaz zreťazí čísla 1, 3, 2, a 5 a uloží ich do vektora s názvom x. Potom napíšeme x, a vráti nám to naspäť vektor.
x <- c(1, 3, 2, 5)
x
Uloženie do premenej sa vykonáva príkazom = namiesto <-.
x = c(1,6,2)
x
y = c(1,4,3)
y
Napísaným ?funkcmeno sa vždy spustí nové okno s dodatočnými informáciami o danej funkcii.
V R môžeme pripočítať dve množiny čísiel spolu. Ono to pridá prvé číslo z x k prvému číslu z y a tak ďalej. Avšak, x a y by mali byť rovnakej veľkosti. Veľkosť môžeme zístiť pomocou funkcie length().
length(x)
length(y)
x+y
Funkcia ls() dovoľuje nám nazrieť na zoznam všetkých objektov, ako sú dáta a funkcie, ktoré sme doposial uložili.
Funkcia rm() môže byť použitá na vymazanie toho čo už nepotrebujeme.
ls()
rm(x, y)
ls()
Tiež je možné vymazať všetky objekty naraz.
rm(list=ls())
Funkcia matrix() môže byť použitá na vytvorenie matice čísel. Pred tým než použijeme túto funkciu sa môžme o nej viac naučiť použitím príkazu ?matrix.
?matrix
Tento pomocný súbor nám prezradí to čo funkcia matrix() má za vstupy... ale pre začiatok sa sústredme na prvé tri: dáta (položky v matici), počet riadkov, a počet stĺpcov.
Najprv vytvorme jednoduchú maticu.
x = matrix(data = c(1,2,3,4), nrow = 2, ncol = 2)
x
Poznámka: môžeme vynechať písanie znakov data=, nrow=, ncol=, v funkcii matrix().
x = matrix(c(1,2,3,4),2,2)
Spustenie príkazu bude mať rovnaký efekt. Avšak, to môže byť niekedy užitočné, keď chceme špecifikovať mená argumentov, ktoré vstupujú do funkcie. R predpokladá, že argumenty sú písané v rovnakom poradí ako je to v pomocnom súbore. V predošlom príklade R vytvorilo maticu úspešne vyplnením stĺpcov. Alternatívne použitím možnosti byrow=TRUE môžeme vyplniť maticu v poradí začinajúc riadkami namiesto stĺpcov.
matrix(c(1,2,3,4), 2, 2, byrow=TRUE)
Všimnite si, že horné príkazy nepriradili hodnotu matice do premennej x. V tomto prípade je matica len vypísaná na obrazovku, ale nie je uložená pre budúce výpočty.
Funkcia sqrt() vráti odmocninu každého prvku vo vektore alebo v matici.
Príkaz x^2 zvýši hodnotu každého prvku na mocninu dvoch. Každá mocnina je možná, zahrňujúc zlomky alebo záporné čísla.
sqrt(x)
x^2
Funkcia rnorm() vygeneruje vektor náhodných čísiel z normálového rozdelenia. Prvým argumentom funkcie je n - veľkosť generovanej vzorky dát.
Zakaždým, keď sa volá táto funkcia, tak získame odlišné údaje.
Teraz vytvoríme dve korelované množiny čísel, x a y, a použijeme funkciu cor() na vypočítanie korelácie medzi nimi.
x = rnorm(50)
y = x + rnorm(50, mean=50, sd=.1)
cor(x, y)
Defaultne funkcia rnorm() vytvorí štandardné normované náhodné premenné s priemerom 0 a štandardnou odchýlkou 1. Avšak, priemer a štandardná odchýlka môže byť zmenená použítím argumentov mean a sd, ako bolo ukazané vyššie.
Niekedy chceme náš kód reprokukovať v presnej množine náhodných čísel. Na to, aby sme to spravili použijeme funkciu set.seed(). Táto funkcia berie integer resp. celé číslo ako argument.
set.seed(1145)
rnorm(10)
Použijeme príkaz set.seed() napriek tomu, že vykonávame operácie s náhodnými údajmi. Vo všeobecnosti toto nám povoľuje zreprodukovateľnosť výsledkov používateľovi.
Funkcie mean() a var() môžu byť použité na vypočítanie priemeru a odchýlky/rozptylu vektoru čísel. Aplikovaním funkcie sqrt() na výstup var() dostaneme štandardnú odchýlku. Alebo môžeme jednoducho použiť funkciu sd().
set.seed(3)
y = rnorm(100)
mean(y)
var(y)
sqrt(var(y))
sd(y)
Funkcia plot() je primárny spôsob na vykreslovanie údajov v R.
Napríklad plot(x, y) produkuje scatterplot čísiel x verzus čísla z y.
Je veľa dodatočných možností, ktoré môžu byť posunuté ako argument funkcii plot().
Napríklad agrument xlab označí výsledky na osi x-ovej.
Príkazom ?plot zobrazíme ďalšie informácie o funkcii plot().
x = rnorm(100)
y = rnorm(100)
plot(x, y)
plot(x, y, xlab="Toto je x-ová os", ylab="Toto je y-ová os", main="Graf X vs Y")
Veľmi často budeme potrebovať uložiť výsledok grafu. Príkaz na to bude zaležať na type súboru, ktorý chceme vytvoriť.
Napríklad na to, aby sme vytvorili pdf súbor, tak použijeme funkciu pdf(), a ďalej môžme vytvoriť aj jpg súbor použiťím funkcie jpeg().
pdf("ISLR - 1. Úvod do jazyka R - Graf.pdf")
plot(x, y, col = "green")
dev.off()
Funkcia dev.off() indikuje R to, že sme skončili s vytváraním grafu. Alternatívne môžeme jednoducho skopírovať graf a prilepiť to do vhodného súborového typu, ako napríklad dokument Word.
Funkcia seq() môže byť použitá na vytvorenie sequencie/postupnosti čísel Napríklad, seq(a, b) vytvorí vektor čísiel v rozsahu od a do b.
Existuje veľa ďalších možností: napríklad, seq(0, 1, length=10) vytvorí sekvenciu 10 čísliel, ktoré sú rovnako rozdelené medzi 0 a 1. Napísaním 3:11 je skratka pre príkaz seq(3, 11) pre celočíslené argumenty.
x = seq(1, 10)
x
x = 1:10
x
x = seq(-pi, pi, length = 10)
x
Teraz vytvoríme viac sofistikovanejšie grafy. Funkcia contour() vyprodukuje vrstevnicový graf, ktorý reprezentuje troj-dimenzionálne dáta. Je podobné topografickej mape.
Do funkcie sa zadavájú tri argumenty:
Ako s funkciou plot(), existuje veľa iných vstupov, ktoré môžu vyladiť výstupný graf funkcie contour().
Pre zistenie ďalších vlastností funkcie si môžete pozrieť pomocný text zadaním príkazu ?contour.
y = x
f = outer(x, y, function(x, y)cos(y)/(1 + x^2))
contour(x, y, f)
pdf("ISLR - 1. Úvod do jazyka R - Graf Contour.pdf")
contour(x, y, f, nlevels = 45)
dev.off()
contour(x, y, f, nlevels = 45)
fa = (f - t(f)) / 2
contour(x, y, fa, nlevels = 15)
Funkcia image() funguje podobným spôsobom ako funkcia contour(), až na to, že produkuje farebne-kódovaný graf, ktorého farby záležia od hodnoty z.
Tento graf je známy pod pojmom heatmap, a môže byť niekedy použitý ako graf teplot v predpovedí počasia. Alternatívne, funkcia persp() môže byť použitá na produkovanie troj-dimenzionálneho grafu. Argumenty theta, phi nastavujú uhly pod ktorým je graf zobrazený.
image(x, y, fa)
persp(x, y, fa)
persp(x, y, fa, theta = 30)
persp(x, y, fa, theta = 30, phi = 20)
persp(x, y, fa, theta = 30, phi = 70)
persp(x, y, fa, theta = 30, phi = 40)
A = matrix( 1:16, 4, 4)
Potom, napísaním
A[2, 3]
vyberieme prvok korešpondejúci druhý riadeok a tretí stĺpec. Prvé číslo potom je v po zátvorke [ vždy referuje riadku, a druhé číslo vždy sa spája so stĺpcom.
Môžeme vybrať mnoho riadkov a stĺpcov v jednom čase, zabezpečujúc vektory ako indexy.
A[c(1,3), c(2,4)]
A[1:3, 2:4]
A[1:2, ]
A[ , 1:2 ]
Posledné dva príklady zahrňajú buď žiadny index pre stĺpce, alebo žiadny index pre riadky. Tieto indikujú to, že R by mal zahnúť všetky stĺpce alebo všetky riadky respektívne. R spracováva jeden riadok alebo stĺpec matice ako vektor.
A[1, ]
Keď použijeme záporné znamienko, index povie R aby nechal všetky riadky alebo stĺpce okrem tých ktoré naznačujú index.
A[ -c( 1, 3), ]
Funkcia dim() dá počet riadkov nasledovaný číslom stĺpcov v danej matici.
dim(A)
Pre väčšinu analýz, prvý krok je importovanie dátovej množiny do R.
Funkcia read.table() je jedna z primárnych spôsobom načínia dát.
Na exportovanie dát sa používa funkcia write.table().
Pred načítaním dátovej množiny sa musíme ujistiť, že R vie kde sa nachádzajú tie súbory.
V tomto príklade začneme načítavaním dátovej množiny Auto. Tieto dáta sú súčasťou ISLR knižnice.
Ale na ukážku načítavania dát, tak tieto dáta načítame zo súboru.
Funkcia read.table() načíta dáta zo súboru Auto.data do R a uloží to ako objekt, ktorý pomenujeme Auto, a vo formáte referovanom ako data frame. Raz keď sú dáta načítané, tak voláme funkciu fix() na zobrazenie ukážky načtaných dát zobrazených v samostatnom okne v podobe tabuľky.
Auto = read.table("Auto.data")
fix(Auto)
Táto dátova množina nebola správne načítaný, pretože R predpokladal, že názov premenných je súčasťou dát a zahrnul ich v prvom riadku.
Tento dáta tiež obsahujú niekoľko chýbajúcih údajov, ktoré sú označené znakom otáznika ? .
Chýbajúce hodnoty sa často vyskytujú v reálnych dátových množinách.
Použitím voľby header=TRUE vo funkcii read.table(), R urobí to, že prvý riadok v súbore, ktorý obsahuje názvy premenných, a použitím voľby na.string urobí R to, že za každým, keď uvidí chýbajúci údaj alebo znak ?, tak s týmto údajom bude zaobchádzať ako s chýbajúcim prvkom v dátovej množine.
Auto = read.table("Auto.data", header = TRUE, na.string = "?")
fix(Auto)
Excel je najčastejší formát ukladania dát. Dá sa jednoducho načítať do R a uložiť ako ako csv (comma separated value) súbor a potom načítať ich pomocou funkcie read.csv().
Auto = read.csv("Auto.csv", header = TRUE, na.string= "?" )
fix(Auto)
dim(Auto)
Auto[1:4, ]
Funkcia dim() nám povie, že dáta majú 397 záznamov, alebo riadkov, a deväť premenných/variables, alebo stĺpcov.
Je niekoľko spôsobom ako si poradiť s chýbajúcimi dátmi.
V tomto prípade máme len 5 riadkov, ktoré obsahujú chýbajúce záznamy a tak vyberieme funkciu na.omit(), ktorá jednoducho vymaže dané riadky.
Auto = na.omit(Auto)
dim(Auto)
Raz keď sú dáta načítané správne, môžeme zavolať funkciu na.omit(), ktorá skontroluje a vypíše názvy premenných.
names(Auto)
Môžeme použiť funkciu plot() na vyprodukovanie scatterplots kvantitatívnych premenných.
Avšak, jednoducho keď napíšeme názvy premenných, tak sa objavý chybná hláška, pretože R nevie sa pozrieť do Auto dátovej množiny pre tieto premenné.
plot(cylinders, mpg)
Error in plot(cylinders, mpg): object 'cylinders' not found
Traceback:
Na to aby sme odkazovali na premennú, musíme napísať dátovú množinu a názov premennej s znakom $.
Alternatívne môžeme použiť funkciu attach() na to, aby povedalo R, aby vyrobilo premenné v tejto dátovej množine, ak sú prístupne menom.
plot(Auto$cylinders, Auto$mpg)
attach(Auto)
plot(cylinders, mpg)
Premenná cylinders je uložená vektor čísel, tak R s ňou zaobchádza ako s kvantitatívnou (veľkostnou) hodnotou.
Avšak, keďže je malý počet možných hodnôt cylinderov, tak je lepšie ak sa s nimi bude zaobchádzať ako kvalitatívnymi premennými.
Funkcia as.factor() konvertuje kvantitatívnu premennú na kvalitatívnu.
cylinders = as.factor(cylinders)
Ak je premenná v grafe na x-ovej osy ako kategorická premenné tak boxplots budú automaticky produkované funkciou plot().
Ako zvyčajne, voľby čísiel môžu byť špecificky zmenené v grafe.
plot(cylinders, mpg)
plot(cylinders, mpg, col = "red")
plot(cylinders, mpg, col = "red", varwidth=TRUE)
plot(cylinders, mpg, col = "red", varwidth = TRUE, horizontal = TRUE)
plot(cylinders, mpg, col = "red", varwidth=TRUE, xlab = "cylinders")
Funkcia hist() môže byť použitá na vykreslenie histogramu.
Berte do úvahy, že col=2 má rovnaké správanie ako col="red"
hist(mpg)
hist(mpg, col = 2)
hist(mpg, col = 2, breaks = 15)
Funkcia pairs() vytvorí scatterplot maticu, to je pr každý pár premenných v danej dátovej množine.
Môžeme vyprodukovať scatterplot aj len pre podmnožinu premenných.
pairs(Auto)
pairs(~ horsepower + weight + acceleration, Auto)
pairs(~ mpg + displacement + horsepower + weight + acceleration, Auto)
Spojenie kombinácií alebo priesečník funkcií plot() , identify() dokáže vytvoriť užitočnú interaktívnu metódu na identifikovanie hodnoty pre určitú premennú pre dané body na grafe.
Do funkcie indentify() vstupujú tri argumenty: premenná osi x, premenná osi y, a pemenná tých hodnôt, ktoré chceme vypísať pre každý bod. Potom klikneme na daný bod v grafe a R vypíše hodnotu premennej ktorá nás zaujíma. Pravým kliknutím na graf ukončíme funkciu identify(). Čísla sú vypísané pod funkciu identify() korešpondujúc s riadkami pre zvolené body.
plot(horsepower, mpg)
identify(horsepower,mpg,name)
Funkcia summary() produkuje numerické prehľadové zhrnutie každej premennej v danej dátovej množine.
summary(Auto)
Pre kvalitatívne premenné ako napríklad name, R vytorí zoznam počtu záznamov, ktoré patria do daných kategórií.
Môžeme tiež vyprodukovať zhrnutie aj jednej premennej.
summary(mpg)
Keď sme už dokončili prácu s R, tak zavoláme funkciu g() na to, aby R vypla a ukončila.
Keď už existujúce R je spustené, tak máme možnosť uložiť súčastný workspace so všekými objektmi a dátovými množinami, ktoré sme vytvorili v danej R relácií, a toto bude prístupné pri ďalšej návšteve.
Pred skončením R, možno chceme uložiť záznam všetkých príkazov, ktoré sme napísali, a toto môže byť spravené funkciou savehistory().
Pri návrate môžete načítať históriu volaním funkcie loadhistory().
q()