You are on page 1of 13

Wprowadzenie do R dla programistw innych

jzykw
Artur Suchwako, quantup.pl

2014-02-23

Wstp
Dokument to moliwie krtkie wprowadzenie do systemu R dla osb znajcych inne
jzyki programowania. Celem jest jak najszybsze opanowanie podstaw R i naucze-
nie si operacji znanych z innych narzdzi. Nie jest celem przedstawianie metod
statystycznych czy metod analizy danych.
W dokumencie znajduj si krtkie wskazwki: jakie komendy pozna, czego si
nauczy oraz informacje, co jest wane w pracy z R.
Przeczytanie tego dokumentu powinno zaj najwyej godzin. Poczytanie na
temat wymienianych funkcji, przewiczenie ich uywania i nauczenie si posugiwania
si wymienionymi pakietami na pewno zajmie duo wicej czasu.
Oczywicie, jeli to nie wystarcza, to trzeba sign po inne rda (atwo znalec
w Sieci) albo skorzysta ze szkole rmy QuantUp.
Zakadam, e czytelnik:

Wie, co potra R i e R mu si przyda  jeli nie, to zachcam do przeczytania


krtkiej informacji zachcajcej.

Zna przynajmniej podstawy jzyka angielskiego  do samodzielnego czytania


dokumentacji i poszukiwania informacji w Internecie.

Umie uywa jakiego jzyka programowania. Jakiego i jak dobrze  w zasadzie


bez znaczenia.

Chce powici czas na nauk R  inaczej adna ksika czy materiay nie
pomog.

Powodzenia w nauce R!

1
Materiay rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwako

1 Wprowadzenie
1.1 Podstawy
Instalacja i pocztek
cignij R (dla Windows: http://cran.at.r-project.org/bin/windows/
base/)
eby w razie otrzymania niezrozumiaych komunikatw o bdach mc korzy-
sta z pomocy w Sieci, zmie jzyk na angielski:

 odznacz tumaczenie treci podczas instalacji R


 a jeli R jest ju zainstalowany, to zmie na LANGUAGE=en w pliku Rconsole
(linia okoo 70) w katalogu, w ktrym zainstalowany jest R

http://www.rstudio.com/ide/ lub Notepad++ http://


Zainstaluj RStudio
notepad-plus-plus.org/ + NppToR http://sourceforge.net/projects/
npptor/.
RStudio jest bardzo wygodnym narzdziem integrujcym wiele funkcjonalnoci,
np. do pracy z knitr. Podstawowa komenda: Ctrl + Enter przesya fragment
skryptu z edytora do R.
Jak czego nie wiesz: szukaj w Sieci.
Gdy czego nie rozumiesz: eksperymentuj i szukaj dalej.

Jak dziaa R?
R jest jzykiem programowania.
Dziaa w trybie interaktywnym: piszemy polecenie i otrzymujemy (lub nie)
odpowied od R.
To od nas zaley, czy otrzymamy odpowied.
Wynik dziaania polecenia moemy przypisa do zmiennej: x <-2 + 2. Wtedy
odpowiedzi nie uzyskamy.
Odpowied uzyskamy np. w sytuacji: summary(x).
Wywietlenie obiektu: x (i Enter) albo print(x).
Na takim obiekcie moemy wykona kolejne polecenia: y <-x + 3.
Wszystkie obiekty znajduj si w przestrzeni roboczej. O tym pniej.

Praca z R w praktyce
Powtarzanie ostatniego polecenia: strzaka w gr.

2
Materiay rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwako

Czyszczenie konsoli: Ctrl + L


+ na pocztku linii oznacza niedokoczone polecenie. Dokocz lub nacinij Esc.
Ustaw katalog roboczy tam, skd chcesz odczytywa i gdzie chcesz zapisywa
pliki: getwd, setwd.
Instalacja pakietw:install.packages(...). Wczytywanie zainstalowanego
library(nazwa.pakietu).
pakietu:
Moesz zapisa histori polece: polecenie Save History... z menu File.
Wyjcie z R: q().
Wczytywanie kodu z pliku: source.
Zapoznaj si z menu R.

Pomoc i materiay
Podstawa: ? lub help. Uwaga: sprbuj ?if oraz ?"if"
Przykad: example(plot)
Pomoc w html: help.start()
StackOverow, pytania oznaczone przez r: http://stackoverflow.com/questions/
tagged/r. Cz programistw udzielajcych si w tym serwisie jest bardzo
aktywna  atwo i szybko mona otrzyma pomoc.
Jak zadawa pytania, eby otrzyma odpowied: http://rtfm.killfile.pl/.
Google: dodaj do zapytania twitterowy \#Rstats
Dedykowana wyszukiwarka: http://rseek.org
Agregator blogw: http://www.r-bloggers.com

1.2 Proste, techniczne


Przypisanie
x <-2, moliwe te 2 -> x
Unikamy =, chocia jest moliwe.

Nazwy zmiennych
Jak w innych jzykach. Rozrnia si mae i wielkie litery.
Separatorem w nazwach jest kropka, ale moe by te _, np. macierz.reszt.
Zamiast . z innych jzykw, np. do dostpu do pl, uywa si $.
Uwaga na jednoliterowe zmienne lub funkcje uywane przez R. Mona je zepsu
przez przypisanie: c, q, s, t, C, D, F, I, T.

3
Materiay rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwako

Komentarze
Rozpoczynaj si znakiem \# i obejmuj ca lini.
Nie ma komentarzy blokowych.
Ale za to w RStudio po zaznaczeniu bloku naciskajc Ctrl + Shift + C wsta-
wiamy automatycznie komentarz w kadej linii z tego bloku.

Obiekty
Obiekty w przestrzeni roboczej: ls()
Usuwanie obiektw: rm()

2 Rodzaje obiektw
2.1 Wektory
Wektory  podstawy
Wektor to podstawowy typ w R.
Wektor zawiera elementy jednego typu (logical, integer, double, character).
Oczywicie, ten typ moe by rny dla rnych wektorw.
Liczba jest wektorem jednoelementowym.
Indeksujemy od 1.
Wektory tworzy si korzystajc z funkcji c, np. c(2, 3, 17).

Wektory  operacje
Operacje na wektorach wykonywane s element po elemencie, np. x *2 wyge-
neruje wektor, ktrego elementami s pomnoone przez 2 elementy x
Uwaga na dodawanie wektorw rnej dugoci! Sprbuj rep(2, 3)+ rep(4,
6) oraz rep(2, 3)+ rep(4, 5) i na koniec rep(2, 3)+ 4. To jest tzw. recycling
rule.
Dostp do wektora x <-c(1, 2); x[2]. Mona uywa zmiennych logicznych
x[TRUE, FALSE].
Cigi elementw: 1:17, funkcja seq, np. seq(from = 1, to = 10, by = 2).
Sortowanie: sort, order.
Przetestuj dziaanie funkcji which: which(1:17 > 3)

4
Materiay rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwako

2.2 Typy obiektw


Typy obiektw
Wektor, macierz, ramka danych, . . .
Konwersje midzy typami: funkcje as.*(), popatrz np. na as.data.frame().
Sprawdzenie typw obiektw: funkcje is.*(), popatrz np. na is.numeric().
Waciwoci obiektw

 class()  klasa obiektu, mona modykowa


 typeof()  typ obiektu,
 mode()  sposb pamitania obiektu,
 length()  dugo obiektu,
 attributes()  atrybuty obiektu; mona je zmienia z pomoc tej samej
funkcji,
 attr()  dostp do wybranych atrybutw obiektu
Uwaga: Na typy zmiennych patrzymy tutaj gwnie z punktu widzenia analizy
danych.

2.3 Operacje logiczne


Operacje logiczne
Stae: T lub TRUE, F lub FALSE.
Mona tworzy wektory wartoci logicznych.
Operatory & i | dziaaj element po elemencie.
Operatory && i || zwracaj wektor jednoelementowy.
Zapoznaj si z any() i all().

2.4 Macierze
Macierze
Tworzenie macierzy z wektoramatrix(1:12, 3, 4). Wiersz po wierszu: x <-
matrix(1:12, 3, 4, byrow = T).
Moliwe s wszystkie standardowe operacje macierzowe, np. t(x).
Operacje arytmetyczne (np. +, log) wykonywane s element po elemencie.
Do elementw dostajemy si tak: x[2, 3]. Sprawd rnic midzy x[2, 3] a
x[2, 3, drop = F].

5
Materiay rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwako

Dostp do kolumn: x[, 1] x[1:2, ].


i do wierszy:
Uwaga na zasad recyclingu: sprawd, jak dziaa matrix(1:6, 2, 3)+ c(1, 4)
Nazwy wierszy i kolumn: rownames, colnames
Wektoryzacja operacji (wane!): apply, sapply
czenie macierzy: rbind (wierszami), cbind (kolumnami)

2.5 Listy
Listy
Tak, jak wektory, ale elementy mog by rnych typw.
Tworzenie listy: x <-list(nazwisko = "Iksinski", wiek = 38, dzieci = c(12,
3))
Informacja o zawartoci:attributes(x)
Do elementw dostajemy si tak: x[[1]], x$nazwisko
Uwaga: x[1] to lista jednoelementowa zoona z pierwszego elementu.
Dostp x[[4]] nie zadziaa, ale przypisanie x[[4]] <-2 spowoduje powikszenie
listy.
Operacja element po elemencie na licie: lapply

2.6 Tekst
Tekst
Tworzenie napisw: x <-"to jest napis".
Wypisywanie tekstu: cat, print.
czenie napisw: paste, paste0.
Do operacji na tekcie jak najszybciej zacznij korzysta z pakietu stringr, jest
atwiejszy w uyciu od standardowych funkcji R (z base).
Moliwe jest wykorzystywanie wyrae regularnych.

3 Dane i ich analiza


3.1 Ramki danych (data frames)

6
Materiay rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwako

Ramki danych  I
Odpowiedni typ sucy do przechowywania danych nazywa si data.frame.
Mona myle o nim jak o prostoktnej tabeli lub tabeli w bazie danych.
W poszczeglnych kolumnach zmienne mog by rnych typw. Poczytaj o
typie factor (zmienna czynnikowa).
Obejrzyj przykadow ramk danych: library(MASS); data(Cars93).
Ramka danych jest zaimplementowana w R jako lista kolumn.
Do kolumn dostajemy si np. tak dane$nazwa.kolumny.
Do elementw dostajemy si jak do elementw macierzy.

Ramki danych  II
Poczytaj o funkcjach:

 names, rownames (nazwy),


 dim, nrow, ncol (wymiary),
 apply, aggregate, subset (operacje).
Wczytywanie i zapisywanie danych z plikw tekstowych: read.table, write.table
.
Zapisywanie i odczyt danych binarnych: save, load.
Najwaniejsze parametry tych funkcji: sep, header, dec.

3.2 Statystyki opisowe


Statystyki opisowe
Wyprbuj dziaanie funkcji dla kolumn i caych danych: mean, min, summary,
range oraz table.
Podstawowe wykresy: plot, pie, barplot, hist, dotchart.

3.3 Not a Number (NaN) i brakujce wartoci (NA, Not Available)

NaN i NA
Operacje na liczbach mog zwrci NaN, np. 0/0.
Sprawdzamy ich obecno funkcj is.nan.
Brakujce wartoci s kodowane przez NA.
Odpowiednie kodowanie jest bardzo wane w analizie danych.

7
Materiay rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwako

Sprawdzamy ich obecno funkcj is.na.


Obsuga: przyjrzyj si dokumentacji funkcji na.omit.

4 Programowanie
4.1 Funkcje
Funkcje  wywoywanie
Wywoywanie funkcji  przewicz na przykadzie: seq(), seq(1), seq(1, 2),
seq(to = 2, from = 1), seq(1, 2, length.out = 3)
Pamitaj o nawiasach wywoujc funkcj bezargumentow, np. tak seq().
Parametry przekazywane s przez warto.
Mona uy zmiennych globalnych aby przekaza przez referencj. Oczywicie,
to jest brzydkie rozwizanie.

Funkcje  tworzenie
Do stworzenia funkcji uywamy funkcji R function w taki sposb:

fun <- function(x, delta = 2)


{
y <- x + delta + 1
y
}

Domylne wartoci  pokazane powyej.


Moliwe jest uycie zmiennej liczby argumentw. Patrz: ....

Funkcje  jak zwrci wicej wartoci?


eby zwrci wicej ni jedn warto, umieszczamy wyniki na licie. Uwaga:
To jest bardzo uyteczne rozwizanie.

policz.2.3 <- function(x)


{
return(list(x.2 = x^2, x.3 = x^3))
}

8
Materiay rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwako

4.2 Bdy i wyjtki


Bdy i wyjtki
Funkcja message("Licze...") generuje komunikat diagnostyczny.
Funkcja warning("Jest problem...") generuje ostrzeenie.
Funkcja stop zatrzymuje bezwarunkowo wykonanie programu generujc bd.
stopifnot zatrzymuje program warunkowo.
try uywamy do wyliczenia wyraenia, ktre moe powodowa problem, np.
try(log("a")). Dziki temu nie przerywamy wykonania programu. Mona te
wyczy komunikaty: options(show.error.messages = FALSE)
tryCatch umoliwia wykorzystanie wasnych komunikatw o bdach (handle-
rw).
Poczytaj wicej: ?conditions

4.3 Sterowanie przepywem kodu


Instrukcje warunkowe: if i ifelse

if (liczba %% 2) {
cat("nieparzysta")
} else {
cat("parzysta")
}

ifelse(1:5 > 2, "wariant 1", "wariant 2")

Ptla for

for (i in 1:5) cat(i)


for (i in 5:1) cat(i)
for (i in c("a", "b")) cat(i)

Ptla while

liczba <- 7
while (liczba > 0) {
cat(liczba)
liczba <- liczba - 1
}

9
Materiay rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwako

5 Podstawy graki
Funkcje niskiego i wysokiego poziomu
Funkcja wysokiego poziomu otwiera okno graczne oraz rysuje wykres, funkcja
niskiego poziomu dorysowuje obiekty.
Przeled przykad: plot(1:2, 2:3), abline(h = 2.5)
Najwaniejsza funkcja wysokiego poziomu: plot()
Zapoznaj si z podstawowymi funkcjami niskiego poziomu:

 abline(), lines(), points(), text(),


 title(), axis(), legend().

Parametry graczne i pozostae sprawy


Zapoznaj si z podstawowymi parametrami funkcji plot: type (typ wykresu;
szczeglnie wany jest type = "n"), col (kolor), xlim i ylim (zakresy osi 
wektory), xlab i ylab (etykiety osi), main (tytu), cex (wielko), lty (typ linii),
lwd (grubo linii)
Wiele wykresw na jednym: par(mfrow=c(w,k))
Poczytaj o funkcji par().
Dowiedz si, jak dziaaj urzdzenia graczne, np. pdf(). Uywajc urzdze
gracznych zawsze pamitaj o dev.off().

6 Efektywna praca w R
Nauka R
Nieustannie ucz si R.
Ucz si programowa w R oraz uywa narzdzi pomocniczych.
Notuj sobie nazwy czsto uywanych funkcji w sowniczku. Byskawicznie si
je zapomina.
Subskrybuj podsumowania z list dysksyjnych o R.
Odwiedzaj R-Bloggers: http://www.r-bloggers.com/

Organizacja pracy
Rb wszystko porzdniej, ni si wydaje, e trzeba.

10
Materiay rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwako

Miej porzdek w plikach i materiaach do pracy.


Miej kad analiz w osobnym katalogu oraz porzdek w kadym z tych kata-
logw.
Notuj wicej, ni si wydaje, e trzeba.
Pamitaj o komentarzach. Wklejaj do kodu linki i informacje o rdach. Pa-
mitaj o getwd i setwd w kodzie.
Pisz kod starannie, zgodnie z zasadami kodowania: odpowiednie nazwy, wci-
cia, odstpy itp.

Organizacja pracy  automatyzacja i powtarzalno


Automatyzuj wszystko, co si da. Przydaje si w najmniej spodziewanym
momencie. Uwaaj, eby nie wkada w to wicej pracy ni warto.

Zawsze pisz skrypt (z rozszerzeniem .R) wykonujcy analiz. Staraj si, eby
analizy byy powtarzalne (szukaj: `'reproducible analysis / research).

Mona zapisywa workspace i pliki binarne z krokami analizy, ale lepiej zapi-
sywa kod, ktry j odtworzy.

Staraj si przechowywa jak najwicej wynikw w postaci kodu rdowego,


ktry je wygeneruje i jak najmniej w postaci binarnej (reproducible research!).

Czasami warto zrobi pakiet. Zrobienie pierwszego moe by trudniejsze, ale z


kadym nastpnym bdzie atwiej. . .

Koduj pliki w UTF-8. To uatwia uywanie rnych pomocniczych narzdzi.

Uywaj VCS (systemu kontroli wersji).

rodowisko pracy
Uywaj dobrego edytora i naucz si jego skrtw klawiaturowych (np. Note-
pad++ i NppToR, TINN-R, RStudio).
Sprbuj korzysta ze zintegrowanych rodowisk typu Eclipse + StatET lub ESS
(Emacs Speaks Statistics).
Znajd odpowiednie dla siebie rodowisko wspierajce prac z R (http://www.sciviews.org/_rgui/
dosy stare zestawienie). Uwaga: niektre nie dziaaj dobrze z wieloma mo-
nitorami.
Dowiedz si, jakiego GUI uywaj inni: http://www.kdnuggets.com/polls/2011/r-
gui-used.html

11
Materiay rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwako

Dostosuj rodowisko pracy, np. zmiana kolorw w edytorze na ciemne to i


jasne litery.

7 Inne sprawy
7.1 R jako jzyk programowania
Jest jzykiem interpretowanym. Oznacza to midzy innymi, e ptle w R wy-
konuj si bardzo wolno i naley unika ich stosowania.
Moliwe (ale nie niezbdne) jest programowanie obiektowe.
Mona czy kod w R z kodem w C/C++, Jav, C# i innymi jzykami.
Wystarczy poszuka.
Jest dosy podobny do Matlaba.

7.2 R w trybie wsadowym


R w trybie wsadowym
To wygodny sposb automatycznego wykonywania programw R, np. o usta-
lonych godzinach.
\"C:\\Program Files\\R\\R-3.0.1\\bin\\R.exe\"CMD BATCH
Uyj polecenia typu:
--vanilla --slave \"moj_skrypt.R\"
Wyniki (tekst, obrazki) traaj do plikw o standardowej nazwie, dopki nie
obsuysz tego w specjalny sposb w kodzie.

7.3 Inynieria oprogramowania


Inynieria oprogramowania
Edytory: Notepad++
rodowiska IDE: RStudio, Eclipse + StatET
Testy jednostkowe:testthat
Dokumentacja: roxygen2
Raportowanie: pakiet knitr

7.4 Dodatkowe poyteczne funkcje

12
Materiay rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwako

Dodatkowe poyteczne funkcje


sessionInfo()  wykorzystywane pakiety
R.Version()  wersja R

7.5 Naucz si pniej


Naucz si pniej
Operacje na danych, np. grupowanie: pakiet reshape2
Graka: np. http://www.statmethods.net/graphs/index.html, pomyl o
ggplot2 http://docs.ggplot2.org/current/
nauce
Operacje na tekcie: pakiet stringr
Aplikacje webowe: Shiny
Wektoryzacja operacji.
Jeli potrzebujesz szybkich operacji na danych, np. grupowania, to poczytaj o
pakiecie dplyr.

13

You might also like