• Nie Znaleziono Wyników

Programowanie i analiza danych w R

N/A
N/A
Protected

Academic year: 2021

Share "Programowanie i analiza danych w R"

Copied!
192
0
0

Pełen tekst

(1)

Wydział Matematyki i Nauk Informacyjnych Politechnika Warszawska

Programowanie i analiza danych w R

Marek Gągolewski

(2)

M

AREK

G

AGOLEWSKI,

Programowanie

i analiza danych w

0. ´ Srodowisko R i RStudio

Materia ly dydaktyczne (preskrypt) przygotowane dla student´ow matematyki na Wydziale Matematyki i Nauk Informacyjnych Politechniki Warszawskiej

[Ostatnia aktualizacja: 25 wrze´snia 2012 r.]

Copyright© 2012 Marek Gagolewski, Wszelkie prawa zastrze˙zone

Warszawa 2012

(3)

SPIS TRE´SCI 0

Spis tre´ sci

0.1. Przed-mowa . . . 1

0.2. Cechy jezyka R . . . ., 5

0.3. Organizacja pracy w ´srodowisku R i RStudio . . . 6

0.3.1. Konsola R-a . . . 8

0.3.2. ´Srodowisko RStudio . . . 9

0.3.3. Pierwsze kroki w trybie interaktywnym . . . 10

0.3.4. Edytor skrypt´ow . . . 12

0.3.5. System pomocy . . . 13

Bibliografia . . . 15

Informacja

Niniejsze materia ly dydaktyczne wcia˙z s, a dalekie od doskona lo´, sci. Je´sli znajdziesz w nich b ledy, czego´, s nie rozumiesz, bad´, z uwa˙zasz, ˙ze pomina lem co´, s istotnego, bardzo Cie prosz, e o stosown, a informacj, e na m´, oj adres e-mail: M.Gagolewski@mini.pw.edu.pl.

Dziekuj, e.,

,

(4)

0.1. PRZED-MOWA 1

0.1. Przed-mowa

Efektem postepu technologicznego, jaki dokona l si, e w ostatnich dziesi, ecioleciach w na-, ukach informacyjnych, jest to, ˙ze dzisiejszy ´swiat dos lownie

”zalany” jest danymi. Korpo- racje, rzady, a tak˙ze jednostki generuj, a morze informacji r´, o˙znego rodzaju: dotyczac, a one, ekonomii, przemys lu, ´srodowiska, kultury, rozrywki itp. Jednak wzrost zdolno´sci groma- dzenia i przesy lania informacji okaza l sie niewsp´, o lmiernie du˙zy w por´ownaniu z postepem,

w zakresie ich przetwarzania i, w konsekwencji, ich rozumienia. Przekszta lcanie danych Analityk danych to najseksowniejszy zaw´od

´

swiata — Hal Varian, ekonomista z Google.

surowych (ilo´sciowych bad´, z jako´sciowych) na mo˙zliwa do przyswojenia wiedz, e jest celem, dzia lania m.in.analityk´ow danych, kt´orzy szeroko korzystaja z osi, agni,,c wsp´o lczesnej na- uki: metod eksploracji danych, wydobywania wiedzy, szeroko pojetej statystyki, teorii baz, danych, czy sztucznej inteligencji.

Analiza danych wymaga nie tylko szerokiej wiedzy teoretycznej w zakresie statystyki, szereg´ow czasowych, uczenia sie maszyn, modelowania itp. Tak, a w miar, e pilny student, mo˙ze wynie´s´c ze swych studi´ow i w lasnej lektury. Niezbednymi s, a tak˙ze, wyobra´znia, kre- atywno´s´c, komunikatywno´s´c, znajomo´s´c partykularnych obszar´ow zastosowa´n(np. ekono- mii, nauk spo lecznych) ale i bieg la umiejetno´, s´c obs lugi narzedzi informatycznych, kt´, ore

s lu˙za do przechowywania, zarz, adzania i przetwarzania informacji. Chodzi tu jednak — co, S lowem: nie wystarczy wiedzie´c, ˙ze m lotek sk lada sie z obucha, i trzonu, ale trzeba nim umie´c wbija´c gwo´zdzie.

trzeba bardzo mocno podkre´sli´c — o taka umiej, etno´, s´c, kt´ora nie tyle implikuje sprawne wykorzystanie istniejacych rozwi, aza´, n, lecz przede wszystkim umo˙zliwiaanalize, projekto-, wanie, implementacje i wdro˙zenie w lasnych pomys l´, ow, a tak˙ze dzielenie sie jej efektami, z innymi cz lonkami spo leczno´sci.

Do jednych z najbardziej popularnych w ostatnich latach narzedzi stosowanych w anali-, zie danych zaliczy´c mo˙zna ´srodowisko R, aktywnie rozwijane przez spo leczno´s´c open-source

(kt´orej ka˙zdy z nas mo˙ze sta´c sie czynnym cz lonkiem)., Ka˙zdy, czyli Ty i ja.

Rys. 1. Popularno´c R-a mierzona liczba wpis´, ow na listach dyskusyjnych Na podstawie: r4stats.com/articles/popularity/

R z powodzeniem konkuruje z komercyjnymi, bardzo drogimi aplikacjami takimi jak SAS (u˙zywanym w wiekszo´, sci korporacji ubezpieczeniowych i bankach), SPSS, Statistica, czy STATA, por. rys. 1. Dzieki wyt, e˙zonej pracy wielu pasjonat´, ow, poprzez system latwo

(5)

0.1. PRZED-MOWA 2

dostepnych pakiet´, ow dodatkowych1(ang. packages) latwe jest rozbudowywanie

”zdolno´sci”

tego narzedzia o tak istotne mo˙zliwo´, sci jak: komunikacja z bazami danych SQL, przetwa- rzanie danych w formacie XML/HTML i pobieranie ich z Internetu, obs luga Apache Hadoop, mo˙zliwo´s´c stosowania oblicze´n r´ownoleg lych i rozproszonych itd. Co wiecej, przegl, adaj, ac, publikacje naukowe mo˙zna zaobserwowa´c, ˙ze znaczna cze´,s´c nowych metod analizy danych jest najpierw implementowana w R.

Zapamietaj,

R jest wolnym (otwartym i darmowym), zaawansowanym ´srodowiskiem oraz jezy-, kiem programowania s lu˙zacym przede wszystkim do przeprowadzania, powtarzalnych (ang. reproducible) oblicze´n statystycznych i numerycznych, analizie danych i tworze- niu wysokiej jako´sci grafiki.

Zob. mo˙zliwe zastosowania R-a: revolutionanalytics.com/what-is-open-source-r/r-language-features.

R jako ca lo´c (pakiety, biblioteki funkcji) powstaje przede wszystkim w jezykach, C, Fortran i. . . R.

R powsta l ok. 1997 r. na Uniwersytecie w Auckland w Nowej Zelandii. Pierwsza

”niete- stowa” wersja 1.0.0 zosta la wydana w roku 2000. Trzon (jadro) R-a sk lada si, e z napisanej, w jezykach C i Fortran implementacji znanego od 1976 r., dojrza lego i wci, a˙z rozwijanego, jezyka S, w tym jego dw´, och najbardziej wp lywowych dialekt´ow: S3 i S4.

R nazywany jest czasem GNU S, by podkre´sli´c jego otwarto´c.

R jest alternatywa dla wci, a˙z u˙zywanego przez wiele instytucji komercyjnego pakietu, S-PLUS, zaprojektowanego w laboratoriach Bella przez Johna Chambersa i jego koleg´ow.

Rozwija sie bardzo dynamicznie: kolejne wydania, uwzgl, edniaj, ace nowe funkcje i poprawki,

A tak˙ze zupe lnie nowe b ledy.,

starych b led´, ow, pojawiaja si, e kilka razy w roku., Adresaci kursu

Idealnego Czytelnika tej ksia˙zki naj latwiej b, edzie okre´, sli´c przez. . . zaprzeczenie. Ot´o˙z Au- tor bardzo nie poleca jej osobom, kt´ore:

– nie sa wcale zainteresowane tym, by nauczy´, c sie programowa´, c w R, czy te˙z zdolno´sci swych udoskonali´c,

– nie maja potrzeby w swojej pracy naukowej czy zawodowej wykonywa´, c ˙zadnych oblicze´n, automatyzowa´c przetwarzania danych ani tworzy´c grafiki u˙zytkowej (np.

wykres´ow),

– nie maja czasu przeczyta´, c jej od poczatku do ko´, nca,

– znaja R-a tak (nie)dobrze, ˙ze wydaje im si, e, i˙z niczego si, e nie dowiedz, a; w szczeg´, ol- no´sci dotyczy to takich, kt´orzy czytajac spis tre´, sci z g´ory zak ladaja, ˙ze rozdzia l na, temat wektor´ow moga sobie spokojnie darowa´, c,

– kt´ore nie zamierzaja tw´, orczo poeksperymentowa´c z przedstawionymi przyk ladami i boja si, e zafascynowa´, c pieknem tworzenia program´, ow,

– kt´ore wpadaja w panik, e na widok notacji matematycznej, nawet tak prostej jak,

”´srednia arytmetyczn, a wektora liczbowego (x, 1, . . . , xn) okre´slamy wzorem (x1+· · ·+

xn)/n” i kt´ore nie potrafia ze spokojem ducha przej´, s´c w´owczas do kolejnego para- grafu, gdzie znajda z pewno´, scia wiele innych, ciekawszych dla siebie zagadnie´, n,

1Oficjalna lista pakiet´ow dodatkowych zawiera aktualnie ok. 4000 element´ow, zob. cran.r- project.org/web/packages/.

(6)

0.1. PRZED-MOWA 3

– kt´ore szukaja ksi, a˙zki na temat zaawansowanych metod analizy danych, analizy nu-, merycznej, dowod´ow twierdze´n itp.

W przeciwnym przypadku, niniejsza pozycja jest, skromnie m´owiac, idealna.,

Kilka wyja´snie´n w duchu ju˙z nieco bardziej pozytywnym. W spos´ob nieinwazyjny be-, dziemy sie odwo lywa´, c do wiedzy, kt´ora Czytelnik m´, og l (ale nie musia l) wynie´s´c z jakiego´s kursu programowania, w szczeg´olno´sci w jezykach C, C++ czy Pascal. Dla posiadacza, takowej pewne podawane tutaj ciekawostki — specjalnie wyr´o˙znione, by nie wywo lywa´c frustracji u os´ob dopiero rozpoczynajacych nauk, e — b, ed, a stanowi ly inspiruj, ac, a warto´, s´c dodana i przyczyni, a si, e do g l, ebszego poznania,

”co R ma pod maska”.,

W szczeg´olno´sci, nie zak ladamy ˙zadnej wiedzy na temat samego R-a. Poradzimy sobie tak˙ze nawet z tymi, kt´orzy maja w g lowie R-owy m, etlik oraz tymi, kt´, orzy z poziomu

”bardzo dobrze” chca wspi,,c sie jeszcze wy˙zej.,

Cze´,s´c ´cwicze´n i przyk lad´ow inspirowanych jest podstawowymi zagadnieniami matema- tyki wy˙zszej (na poziomie studi´ow I stopnia, np. na kierunku matematyka, informatyka, elektronika, mechanika itp.), m.in. algebry macierzy, analizy matematycznej, analizy nume- rycznej (metod numerycznych), rachunku prawdopodobie´nstwa i statystyki matematycznej (te dwa ostatnie w spos´ob naturalny jednak powinny pokrywa´c sie z zainteresowaniami, wiekszo´, sci odbiorc´ow). Bedziemy si, e jednak stara´, c zawsze (przynajmniej z grubsza) wy- ja´snia´c, na czym dana konstrukcja teoretyczna polega. Osoby nia przera˙zone b, ed, a mog ly, takie fragmenty pomija´c bez straty ciag lo´, sci cze´,sci teoretycznej wyk ladu. Odbedzie si, e to, tylko kosztem zmniejszenia liczby okazji do po´cwiczenia pewnych mechanizm´ow.

Podsumowujac, pozycj, e t, e mo˙zna poleci´, c ka˙zdemu, kto jest po prostu zainteresowany dok ladnym poznaniem R-a (bardziej g lebokim ni˙z na poziomie,

”R jako pote˙zny kalkulator”), i wykorzystaniem go w swojej pracy zawodowej czy naukowej. Pewne do´s´c techniczne fakty oznaczyli´smy mianem

”Ciekawostek”, aby mo˙zna je by lo spokojnie pomina´,c przy pierwszym czytaniu. Na szcze´,scie, oka˙ze sie, ˙ze R jest j, ezykiem naprawd, e prostym., Cel i uk lad ksia˙zki,

Dobry programista to taki, kt´ory potrafi zaprogramowa´c wszystko, o czym tylko jest w sta- nie pomy´sle´c. Nabywszy solidne umiejetno´, sci, umie dostrzec jednak, ˙ze czesto nie warto, jest ”wywa˙za´c otwartych drzwi” i mo˙zna skorzysta´c z efekt´ow pracy innych os´ob ze ´sro- dowiska. Jest przygotowany na to, by zrozumie´c podej´scie stosowane przez innych, potrafi doceni´c jego mocne strony, ale i ograniczenia. Wreszcie wie, kiedy nale˙zy

”wzia´,c sprawy w swoje rece” i pewne mechanizmy dostosowa´, c samodzielnie do w lasnych, konkretnych potrzeb.

Znakomita wiekszo´, s´c publikacji dostepnych nie tylko na polskim, ale i zagranicznym,

Kilka godnych odnotowania wyjatk´, ow:

[1–3].

rynku wydawniczym skupia sie na ´, srodkowym etapie opisanego tutaj procesu — korzysta- niu z gotowych narzedzi. Dzie la takie s, a godne pochwa ly, ba, sam Autor z takich korzysta, regularnie. Jest tak jednak pod warunkiem, ˙ze ich Czytelnik umie obcowa´c z nimi w

”o´swie- cony” spos´ob.

W niniejszej publikacji k ladziemy szczeg´olny nacisk na poznanie i rozw´oj umiejetno-,

´sci stosowania najbardziej podstawowych mechanizm´ow jezyka R. Nie mo˙zna jej jednak, nazwa´c po prostu kursem programowania w R, gdy˙z — przynajmniej do tego da˙zymy,

— staramy sie wyj´, s´c poza

”suchy”, li tylko techniczny aspekt pracy programisty. Chcemy pokaza´c u˙zyteczno´s´c R-a w pracy analityka danych-praktyka oraz w zastosowaniach nauko- wych: w jaki spos´ob dokonywa´c we´n mo˙zna r´o˙znego rodzaju oblicze´n matematycznych, jak implementowa´c algorytmy, automatyzowa´c bardzo ˙zmudne — gdyby je wykonywa´c recznie,

— zadania, tworzy´c raporty (tabele, piekne wykresy) itp.,

(7)

0.1. PRZED-MOWA 4

Musimy jednak mocno podkre´sli´c, ˙ze programowania nie da sie tak po prostu nauczy´, c (wku´c) z ksia˙zek, tak jak nie da sie zdoby´, c bieg lej umiejetno´, sci wyra˙zania (ekspresji) swo- ich my´sli i uczu´c np. w jezyku hiszpa´, nskim studiujac tylko rozm´, owki dla turyst´ow. Skrypt ten ma prowadzi´c Czytelnika do zdobycia bieg lej zdolno´sciwyra˙zania, a mo˙ze nawet

”ucie- le´snienia”,Jego w lasnych pomys l´ow. Nie osiagniemy jednak tego celu bez ci, e˙zkiej, czasem,

˙zmudnej pracy w lasnej. ´Srodkiem do tego celu bed, a liczne przyk lady i ´, cwiczenia z kon- kretnych dzia l´ow matematyki, informatyki i statystyki, na kt´orych styku mo˙zna uplasowa´c analize danych. Mo˙zemy jednak zagwarantowa´, c, ˙ze przy odrobinie dobrej woli bedzie to, praca wielce przyjemna. Ogromna satysfakcj, e i rado´, s´c daje bowiem okie lznywanie tak z lo˙zonego i pasjonujacego narz, edzia jakim jest komputer, czego efektem bywa cz, esto stwo-, rzenie

”czego´s z niczego”.

Z powy˙zszych powod´ow proponujemy patrze´c na te ksi, a˙zk, e jako na co´, s na kszta lt kursu pisania wierszy. Poznamy istniejace,

”konwencje literackie”, regu ly gramatyki i ortografii, dowiemy sie, na co zwraca´, c uwage naszego odbiorcy i jakich b l, ed´, ow unika´c. Reszta (czyli zdobycie Literackiej Nagrody Nobla) nale˙zy do Ciebie, zacny Czytelniku. Innymi s lowy, to Ty, sam(a) jeste´s ekspertem/ekspertka w swoim w lasnym obszarze zainteresowa´, n. Poka-

˙zemy Ci tylko pewne

”schematy”, a od Twej kreatywno´sci zale˙zy, czy bedziesz potrafi l(a), wyrazi´c swoje pomys ly w spos´ob, kt´ory zrozumie komputer.

Uk lad ksia˙zki przedstawia si, e nast, epuj, aco:,

1. W cze´,sci pierwszej poznamy podstawy programowania i najwa˙zniejsze operacje na wbudowanych typach danych: wektorach, funkcjach, listach, macierzach, czynnikach, czy ramkach danych. Dowiemy sie te˙z o atrybutach obiekt´, ow, opcjach globalnych i wywo lywaniu metod na obiektach klasy S3, bez znajomo´sci kt´orych trudno m´owi´c o byciu przygotowanym do samodzielnych studi´ow dokumentacji R-a.

2. W cze´,sci drugiej bedziemy doskonali´, c nasze umiejetno´, sci w konkretnych obszarach zastosowa´n: tworzeniu grafiki za pomoca funkcji nisko- i wysokopoziomowych (dzi, eki, czemu narysujemy wszystko, o czym jeste´smy w stanie zamarzy´c), obliczeniach nu- merycznych, obliczeniach statystycznych i symulacjach.

3. W cze´,sci trzeciej poznamy zaawansowane mechanizmy jezyka R, takie jak ´, srodowi- skowy model oblicze´n, parsowanie i ewaluacje wyra˙ze´, n, programowanie zorientowane obiektowo z u˙zyciem klas typu S3 i S4, a tak˙ze wymagajace ju˙z wi, ekszych umiej, etno-,

´

sci sposoby obs lugi plik´ow, komunikacji z bazami danych czy generowania raport´ow.

Omawiajac odpowiednio szczeg´, o lowo zagadnienia programowania w jezyku R musieli-,

´smy zrezygnowa´c ze

”s lownikowego” omawiania wielu, by´c mo˙ze nawet ciekawych funkcji rozproszonych po r´o˙znych pakietach, kt´ore sa udost, epnione z poziomu R-a. Dla przyk ladu,, nie poruszamy tutaj wcale zagadnie´n dotyczacych system´, ow uczacych si, e (PCA, drzewa, klasyfikacyjne, r´o˙zne modele regresji), wielu test´ow statystycznych (analizy wariancji, we- ryfikacji hipotez dla obserwacji parami zale˙znych) i tak dalej. Obiecujemy jednak, ˙ze po lekturze ka˙zdy bedzie w stanie znale´, z´c potrzebne narzedzie i samemu je pozna´, c, a w ra- zie potrzeby napisa´c w lasne. Dzieki temu zmniejszamy te˙z prawdopodobie´, nstwo tego, ˙ze ksia˙zka ta b, edzie po prostu nudna.,

W przypadku wiekszo´, sci wprowadzanych termin´ow podawa´c bedziemy tak˙ze ich an-, gielskojezyczne odpowiedniki — u latwi to studiowanie dokumentacji.,

Wszystkie kody ´zr´od lowe zosta ly przetestowane w wersji 2.15.1 R-a.

(8)

0.2. CECHY JEZYKA R, 5

Podziekowania,

Ta ksia˙zka nie powsta laby bez wsparcia i tak dalej i tak dalej., Autorem zada´n oznaczonych AO jest p. dr Anna Olwert.

To miejsce czeka na Twoja reklam, e. :),

Prosze o komentarze na adres e-mail: M.Gagolewski@mini.pw.edu.pl., Strona WWW ksia˙zki: R.mini.pw.edu.pl,

Marek Gagolewski, Warszawa, 2012 r.

W tym miejscu zaczyna sie w la´, sciwa cze´,s´c rozdzia lu.

0.2. Cechy j ezyka R

,

Jezyk´, ow programowania jest wiele i, co warte podkre´slenia, ˙zaden z nich nie jest idealny.

Niekt´ore jezyki jednak uznawane s, a za godne uwagi w okre´, slonych zastosowaniach. Zawsze warto zna´c nie tylko mocne strony, ale i ograniczenia u˙zywanego przez siebie narzedzia,, aby m´oc lepiej wykorzysta´c je w praktyce.

W pewnym sensie najbardziej podobnym do R-a — je´sli chodzi o og´olne cechy, a zw lasz- cza ukierunkowanie na tzw. obliczenia naukowe — jest jezyk stosowany w pakiecie Matlab, oraz Python z biblioteka SciPy/NumPy. Sk ladnia R-a przypomina´, c mo˙ze czasem te stoso-, wana w C/C++, jednak jego semantyka jest zbli˙zona do Scheme.,

Warto zwr´oci´c uwage na nast, epuj, ace cechy:,

– R jest jezykiem, og´olnego zastosowania— mo˙zna w nim zaimplementowa´c praktycznie ka˙zdy algorytm. Odr´o˙znia go to od jezyk´, ow szczeg´olnego zastosowania, takich jak SAS czy SQL. Z drugiej strony, z powodu braku bezpo´sredniego dostepu do urz, adze´, n

Nie powinno nas to jednak zbytnio zasmuca´c.

sprzetowych, R nie nadaje si, e do napisania systemu operacyjnego, czy sterownik´, ow urzadze´, n.

– R jest przeznaczony raczej do pisania

”ma lych” program´ow, w kt´orych wa˙zne jest

”sedno” a nie

”otoczka”. Skupiamy sie tutaj na samych obliczeniach, a nie na komuni-, kacji z u˙zytkownikiem ko´ncowym.

”Konsumentem” naszych aplikacji jest najcze´,sciej bowiem ´sci´sle okre´slony specjalista. Tworzenie rozbudowanych aplikacji (np. zawie- rajacych okienkowy interfejs graficzny, gier 3D) jest bardzo uci, a˙zliwe.,

– R jest jezykiem interpretowanym. Dzi, eki temu mo˙zna pracowa´, c w nim w spos´ob in- teraktywny, prawie natychmiast otrzymujac wynik wykonywanych polece´, n. Utrud- nia´c to mo˙ze wychwytywanie b led´, ow sk ladniowych. Ponadto, czesto jest on mniej, wydajny od jezyk´, ow kompilowanych takich jak C++. Co wa˙zne jednak, R mo˙ze Pami

etamy jednak, ˙ze, w R pisa´c bedziemy,

ma le” programy.

odwo lywa´c sie do gotowego, skompilowanego kodu pochodz, acego z zewn, etrznych, bibliotek.

(9)

0.3. ORGANIZACJA PRACY W ´SRODOWISKU R I RSTUDIO 6

– R cechuje sie bardzo, zwiez l, a sk ladni, a, tzn. ma lo kodu daje du˙zy, do´, s´c z lo˙zony efekt.

Owa ekspresywno´s´c znaczaco u latwia programowanie. Mo˙ze jednak powodowa´, c, ˙ze nie bedziemy do ko´, nca ´swiadomi, co

”kryje sie” za wykonywanymi przez nas polece-, Patrz wy˙zej.

niami (ryzyko pisania nieefektywnego kodu).

– R posiada do´s´c rozbudowane mo˙zliwo´sci generowania wysokiej jako´sci grafiki do wszelkiego rodzaju publikacji (wykresy, diagramy).

– R jest zgodny z metodologia,open source. Jest to pakiet bezp latny, o otwartym kodzie

´

zr´od lowym, kt´ory mo˙zna pobra´c, pozna´c, a nawet zmodyfikowa´c do w lasnych potrzeb (a tak˙ze zaproponowa´c poprawki, z kt´orych moga korzysta´, c inni). W repozytorium CRAN udostepnionych jest kilka tysi, ecy pakiet´, ow stworzonych przez u˙zytkownik´ow

CRAN ==

Comprehensive R Archive Network, czyli repozytorium R-owych o˙zno´sci.

R-a, majacych r´, o˙zne zastosowanie.

”Linuxowa” filozofia R-a objawia sie w dobrej, wsp´o lpracy z innymi aplikacjami (np. programem do sk ladu publikacji LATEX) — co jeszcze bardziej pozwala nam korzysta´c z pracy innych, takich jak my, u˙zytkownik´ow.

Wada takiego podej´, scia jest brak ´scis lej kontroli jako´sci kodu, czesta niesp´, ojno´s´c rozwiaza´, n i konieczno´s´c opanowywania za ka˙zdym razem nowych narzedzi.,

– R posiada obszerna, szczeg´, o lowa i latwo dost, epn, a,dokumentacje.,

Ciekawostka

Kilka bardziej technicznych cech:

– W R nie ma potrzeby (ani mo˙zliwo´sci) deklarowania zmiennych przed u˙zyciem i usta- lania ich typu: zmienne moga,

dynamicznie” zmienia´c swa dziedzin, e. Otrzymujemy, elastyczno´c kosztem nara˙zenia sie na pope lnianie b l, ed´, ow.

– R posiada mechanizm

od´smiecania” pamieci (ang. garbage collection) — nie ma po-, trzeby recznego usuwania obiekt´, ow (kosztem nieznacznego spadku wydajno´sci). Nota bene, taki mechanizm ma ju˙z wiekszo´, c nowoczesnych jezyk´, ow jak Java czy C#.

– W R dokonujemy oblicze´n najcz,sciej na wektorach, macierzach, listach, ramkach da- nych, a nie tylko na pojedynczych warto´sciach na raz ( latwiejsze programowanie).

– W R mo˙zliwe jest programowanie funkcyjne i obiektowe: jedna funkcja mo˙ze mie´c wiele zastosowa´n zale˙znie od kontekstu (polimorfizm), mo˙zna organizowa´c fragmenty kodu w klasy (znane z jezyka C++), w wielu przypadkach mo˙zliwe jest unikanie stosowania, instrukcji sterujacych typu p, etla, itp.,

– R posiada mechanizm

sesji”, co daje mo˙zliwo´c kontynuowania wykonywanych oblicze´n po restarcie aplikacji.

– W R brak jest wska´znik´ow i referencji na obiekty. Utrudnia (lecz nie uniemo˙zliwia) to implementacje struktur danych (listy, drzewa, grafy). W pewnym sensie jednak tak, a, funkcjonalno´c zapewniaja tzw. ´, srodowiska.

Warto dodatkowo podkre´sli´c, ˙ze R jest przeznaczony do oblicze´n numerycznych, a nie symbolicznych, jak Mathematica, Maple, czy Maxima. Nie da sie za jego pomoc, a np. wy-, znaczy´c analitycznie rozwiazania jakiego´, s zagadnienia ca lkowego. Mo˙zemy jedynie policzy´c jego przybli˙zona warto´, s´c (jak w Matlabie).

0.3. Organizacja pracy w ´ srodowisku R i RStudio

R jest dostepny na platform, e Windows, Linux i MacOS. Jego wersj, e instalacyjn, a mo˙zna, pobra´c ze strony www.r-project.org: otwieramy zak ladke CRAN, wybieramy sw´, oj ulubiony

(10)

0.3. ORGANIZACJA PRACY W ´SRODOWISKU R I RSTUDIO 7

(np. najbli˙zszy naszego miejsca zamieszkania) serwer

”lustrzany” (od ang. mirror )2, a na- stepnie klikamy Download for <platforma>.,

Ciekawostka

Warto zauwa˙zy´c, ˙ze wiele dystrybucji Linuxa pozwala zdoby´c R-a przez w la´sciwe sobie narze-, dzie instalacyjne (np. yum dla Fedory bad´, z apt-get dla Ubuntu) — w takim przypadku jest to lepsze rozwiazanie, gdy˙z b, edziemy mieli automatyczny dost, ep do najnowszych aktualizacji.,

U˙zytkownicy R-a dla Windows moga uruchomi´, c bardzo prosty (by nie rzec prymi- tywny) interfejs u˙zytkownika klikajac odpowiedni, a ikon, e w menu Start. Jako ˙ze w na-, stepnym podrozdziale przejdziemy do omawiania o wiele bardziej wygodnego ´, srodowiska RStudio, nie bedziemy w tym miejscu zag l, ebia´, c sie w obs lug, e tzw. R GUI.,

Zapami etaj,

R mo˙ze pracowa´c w dw´och trybach:

– w trybie interaktywnym, gdzie po ka˙zdym wydanym poleceniu otrzymujemy informacje zwrotn, a o przebiegu jego wykonania,,

– w trybie wsadowym (ang. batch mode), w kt´orym zlecamy ´srodowisku R uru- chomienie danego pliku ´zr´od lowego (skryptu), czyli pliku tekstowego najcze´,sciej o rozszerzeniu .R, zawierajacego kolejne polecenia j, ezyka R przeznaczone do, wykonania.

W codziennej pracy jednak u˙zywa sie cz, esto mieszanki tych dw´, och tryb´ow, pracujac, raz to z pojedynczymi poleceniami, a kiedy indziej z ca lymi zbiorami plik´ow ´zr´od lowych.

Zobaczymy, ˙ze takie podej´scie bedzie dla nas lada moment najbardziej naturalne., Informacja

U˙zytkownicy systemu Windows, aby u latwi´c sobie dostep do zaawansowanych funkcji, R-a (co przyda nam sie w przysz lo´, sci), powinni ju˙z teraz doda´c katalog tej aplikacji do tzw. ´scie˙zki wyszukiwania. Aby to zrobi´c, np. w systemie Windows 7 wystarczy klikna´,c prawym klawiszem na ikonie (M´oj) Komputer (Computer ), wybra´c W la´sciwo-

´sci (Properties), dalej Zaawansowane ustawienia systemu (Advanced system settings) z menu po lewej stronie. W oknie W la´sciwo´sci systemu (System properties) wybieramy zak ladke Zaawansowane (Advanced ) i klikamy Zmienne ´, srodowiskowe (Environmental variables). W sekcji Zmienne u˙zytkownika (User variables) powinni´smy nada´c zmien- nej PATH warto´s´c zawierajac, a ´, scie˙zke do katalogu z plikiem, R.exe, np. C:\Program Files\R\R-2.15.1\bin, por. rys. 2.

2Serwery

lustrzane” udostepniaj, a wierne kopie zasob´, ow projektu R. Utrzymywane sa bezp latnie (z do-, brej woli ich w la´scicieli) przez r´o˙zne instytucje naukowe i komercyjne.

(11)

0.3. ORGANIZACJA PRACY W ´SRODOWISKU R I RSTUDIO 8

Rys. 2. Ustawienie zmiennej ´srodowiskowejPATH pod Windows

0.3.1. Konsola R-a

Warto na poczatku zobaczy´, c, jak wyglada,

”czysty” interfejs R-a. W tym celu nale˙zy uru- chomi´c konsole systemow, a, np. pod Windows otwieraj, ac menu Start i w polu Wyszukaj, programy i pliki wpisujac polecenie cmd, a nast, epnie wyda´, c polecenie R i zatwierdzi´c je klawiszem<ENTER>.

Rys. 3. Konsola R-a pod Linuxem zaraz po uruchomieniu

R przywita nas stosownymi komunikatami, por. rys. 3. Mo˙zemy teraz na przyk lad wy´swietli´c informacje o zainstalowanej na naszym komputerze wersji tego ´, srodowiska wpi-

(12)

0.3. ORGANIZACJA PRACY W ´SRODOWISKU R I RSTUDIO 9

sujac:,

> R.version.string

## [1] "R version 2.15.1 (2012-06-22)"

Widzimy, ˙ze w niniejszym opracowaniu korzystamy z R-a w wersji 2.15.1.

Aby zako´nczy´c sesje R-a wpisujemy:,

> q()

i na pytanie, czy zapisa´c aktualny obraz przestrzeni roboczej, odpowiadamy Nie, wciskajac, klawisz<n>.

0.3.2. Srodowisko RStudio´

U˙zytkownik´ow Eclipse z pewno´scia zainteresuje, wtyczka StatET.

Bezp latny, otwarty program RStudio Desktop mo˙zna pobra´c ze strony www.rstudio.org.

RStudio jest tzw. zintegrowanym ´srodowiskiem programistycznym (IDE, od ang. integra- ted development environment ) dla istniejacej ju˙z w systemie instalacji pakietu R. Dzi, eki, m.in. automatycznemu kolorowaniu sk ladni jezyka R, zarz, adzaniu plikami ´, zr´od lowymi i projektami, licznym rozszerzeniom mo˙zliwo´sci konsoli, systemu pomocy i wy´swietlania grafiki, znakomicie u latwia on prace z R-em. W najnowszej wersji mo˙ze on tak˙ze s lu˙zy´, c do edycji plik´ow LATEX-a (posiada m.in. wbudowane narzedzie automatycznego sprawdzania, pisowni).

Ciekawostka

RStudio dostepne jest tak˙ze w wersji Server. Je´, sli jeste´s zaawansowanym u˙zytkownikiem sys- temu Linux, mo˙zesz mie´c dostep do swoich oblicze´, n w ´srodowisku R z ka˙zdego miejsca na ´swie- cie przez przegladark, e internetow, a (rozwi, azanie to dzia la tak˙ze w wi, ekszo´, sci smartphone’´ow).

RStudio Server wyglada i dzia la tak samo jak RStudio Desktop.,

Rys. 4. Aplikacja RStudio

Rys. 4 przedstawia wyglad uruchomionego ´, srodowiska RStudio z domy´slnymi ustawie- niami, acz ju˙z w trakcie wykonywania pewnych oblicze´n. Okno sk lada sie z czterech cz,,sci:

1. Kod ´zr´od lowy otwartych skrypt´ow i podglad w lasno´, sci obiekt´ow (lewy g´orny kwar- ta l).

(13)

0.3. ORGANIZACJA PRACY W ´SRODOWISKU R I RSTUDIO 10

2. Znana ju˙z nam konsola R-a rozbudowana o bardziej zaawansowane opcje edycyjne i kolorowanie sk ladni jezyka (lewy dolny kwarta l).,

3. Lista zadeklarowanych obiekt´ow i historia polece´n (prawy g´orny kwarta l).

4. Prosty mened˙zer plik´ow, podglad rysunk´, ow, wykaz dostepnych pakiet´, ow R-a i prze- gladarka dokumentacji (prawy dolny kwarta l).,

Prace w RStudio mo˙zna organizowa´, c za pomoca tzw., przestrzeni roboczych(ang. work- spaces), kt´ore przechowuja wszystkie zadeklarowane przez nas obiekty i ca l, a histori, e wy-, konywanych przez nas polece´n (zapisujac je, odpowiednio, do plik´, ow.RData i .Rhistory, kt´ore domy´slnie znajda si, e w naszym katalogu domowym). T, e funkcjonalno´, s´c udostep-, nia tak˙ze

”zwyk ly” R. Ponadto, na wy˙zszym poziomie z lo˙zono´sci, mo˙zemy tworzy´c tak˙ze tzw. projekty, w kt´orych dodatkowo zapisujemy informacje m.in. o edytowanych przez nas plikach ´zr´od lowych (skryptach), rysunkach itp. Gdy poznamy R-a nieco lepiej, be-, dziemy bardzo czesto z nich korzystali, stosuj, ac zasad, e, ka˙zde oprogramowywane

”du˙ze”

zagadnienie — oddzielny projekt.

0.3.3. Pierwsze kroki w trybie interaktywnym

Prastara ´swiecka tradycja g losi, ˙ze ka˙zdy kurs programowania powinno zacza´,c sie od przy-, witania szerokiego grona odbiorc´ow stosownym komunikatem. Powstrzymujac si, e od prze-, kory, wywo lajmy wiec nast, epuj, ace polecenie w konsoli. Wprowadzamy je po tzw., znaku zachety, (od ang. command prompt ), tj.

”<”.

> cat("Hello World!\n")

W wyniku dzia lania otrzymamy komunikat:

Hello World!

Zauwa˙zmy, ˙ze \n oznacza znak ko´nca linii, a napis do wydrukowania zosta l ujety w po-, dw´ojne cudzys lowy.

Zapamietaj,

Osoby majace cho´, c minimalne do´swiadczenie z jezykami programowania takimi jak C,, C++, Pascal, czy Fortran od razu zauwa˙za, ˙ze w R nie jest potrzebny ˙zmudny czasem, proces kompilacji programu. Nie ma tak˙ze potrzeby umieszczenia wykonywanego kodu w oddzielnych plikach ´zr´od lowych. Wydawane polecenia sa interpretowane przez R, i natychmiast wykonywane.

Innymi s lowy, R jest jezykiem interpretowanym. Ponadto, w la´, snie skorzystali´smy z tzw. trybu interaktywnego (pytanie–odpowied´z).

Od samego poczatku powinni´, smy nabra´c nawyku opisywania naszego kodu. Do two- rzenia komentarzy u˙zywamy symbolu

”#” — wszystkie znaki po nim nastepuj, ace (a˙z do, ko´nca wiersza) bed, a ignorowane przez interpreter.,

> cat("Hello World!\n") # wypisuje na ekran komunikat Hello World!

(14)

0.3. ORGANIZACJA PRACY W ´SRODOWISKU R I RSTUDIO 11

Informacja

W wielu jezykach programowania konieczne jest stawianie specjalnego znaku na ko´, ncu ka˙zdej instrukcji (np. ´srednika). Zapominanie o nim jest przyczyna wielu b l, ed´, ow kom- pilacji.

W R, tak samo jak w C czy Pascalu, tak˙ze stosowany jest ´srednik. Jednak˙ze, ´sred- niki potrzebne sa R-owi tylko wtedy, gdy chcemy z jaki´, s powod´ow zapisa´c wiele pole- ce´n w jednym wierszu. W innych przypadkach o ko´ncu polecenia mo˙ze powiadamia´c interpreter po prostu znak nowego wiersza.

> # ±rednik nie jest konieczny (ale nie przeszkadza):

> cat("Hello World!\n");

Hello World!

> # tutaj jest wymagany (dwie instrukcje):

> cat("A teraz... "); cat("cos z innej beczki!\n") A teraz... cos z innej beczki!

Sprawd´zmy, co sie stanie, gdy,

”rozbijemy” nasze polecenie na dwa wiersze. Wci´snijmy klawisz<ENTER> po nawiasie otwierajacym:,

> cat(

+ "Hello World!\n") # wypisuje na ekran komunikat

Znak zachety,

”<” zmieni l sie na,

”+”, co oznacza, ˙ze R oczekuje od nas doko´nczenia wpro- wadzania komendy w kolejnym wierszu.

Zapamietaj,

Znak zachety,

”+” do´s´c czesto b, edzie si, e pojawia l podczas naszych zmaga´, n z R-em.

Bad´, zmy wyczuleni na jego obecno´s´c, gdy˙z czesto b, edzie wskazywa´, c miejsce pope lnie- nia przez nas b ledu sk ladniowego (np. niedomkni, ecia nawiasu czy cudzys lowu).,

Gdy popracujemy nieco d lu˙zej z R-em, zdamy sobie sprawe, ˙ze u˙zywanie trybu interak-, tywnego (tylko konsola) jest nieefektywne — trudno m.in. bedzie nam wraca´, c do uprzednio wywo lywanego kodu czy uruchamia´c d lu˙zsze programy. Z tego powodu om´owimy za chwile, spos´ob zarzadzania plikami ´, zr´od lowymi w RStudio. Konsola bedzie si, e jednak co i raz przy-, dawa´c np. do sprawdzania, czy przebieg naszych program´ow jest prawid lowy, bad´, z wtedy, gdy bedziemy chcieli u˙zy´, c R-a jako prostego kalkulatora.

Informacja

Od tej pory w niniejszym opracowaniu pomija´c bedziemy znaki zach, ety (,

”<” oraz

”+”).

Ponadto, wszelkie wypisywane przez R-a komunikaty poprzedza´c bedziemy dwoma, krzy˙zykami. Dzieki temu unikniemy przypadkowych b l, ed´, ow przy przepisywaniu frag- ment´ow kodu. Przyk lad:

cat("Albatros!\n")

## Albatros!

(15)

0.3. ORGANIZACJA PRACY W ´SRODOWISKU R I RSTUDIO 12

0.3.4. Edytor skrypt´ow

Utw´orzmy nowy skrypt wybierajac z menu File → New → R Script, b, ad´, z wciskajac kom-, binacje klawiszy, <CTRL+SHIFT+n>. Warto go od razu zapisa´c na dysku, np. pod nazwa, test.R (File → Save As albo <CTRL+s>).

Zapami etaj,

Wa˙zne jest, by wyrobi´c sobie nawyk czestego zapisywania edytowanych plik´, ow, by unikna´,c przykrych niespodzianek wywo lanych np. zawieszeniem sie komputera. S lu˙zy, do tego kombinacja klawiszy<CTRL+s>.

Wprowad´zmy nastepuj, acy kod:, cat("Na stacji lokomotywa stoi.") cat("Stoi",

"i si¦ nie boi.\n") CAT(Strasznie)

# koniec

Wielka zalet, a RStudio jest to, ˙ze, kod z edytora mo˙zna bardzo latwo uruchamia´c w konsoli R- a. Je´sli przesuniemy karetke (znak oznaczaj, acy aktualne miejsce, w kt´, orym wprowadzamy tekst) na pierwsze poleceniecat() i wci´sniemy<CTRL+ENTER>, zostanie ona wywo lana.

Zadanie

Wci´snij<CTRL+ENTER> wtedy, gdy kursor jest ustawiony na linijce z cat("Stoi",”. Zobacz, co pojawi lo sie w konsoli i pomy´, sl, co trzeba zrobi´c dalej.

Kombinacja klawiszy<CTRL+ENTER> dzia la tak˙ze, je´sli zaznaczymy fragment tekstu mysza, Bardzo cz

esty b l, ad,, kt´ory mimo tysiaca, napomnie´n bedzie, pope lniany i tak bez przerwy.

— pamietajmy jednak, by zaznacza´, c polecenia w ca lo´sci, a nie tylko ich cze´,sci!

Zadanie

Zobacz, co stanie sie, gdy wci´, sniesz <CTRL+SHIFT+s>, a co gdy <CTRL+SHIFT+ENTER>. Czy wszystko dzia la prawid lowo? Popraw b ledy sk ladniowe samodzielnie.,

W edytorze skrypt´ow (w ka˙zdym razie pod Windows i Linuxem) dzia laja rzecz jasna, standardowe skr´oty klawiszowe, z kt´orymi z pewno´scia spotkali´, smy sie w trakcie naszej, codziennej pracy z komputerem. W´sr´od nich znajduja si, e:,

– Obs luga schowka: <CTRL+c> (kopiuj), <CTRL+x> (wytnij, czyli kopiuj i usu´n) oraz

<CTRL+v> (wklej).

– Zmiana pozycji karetki: <↑>, <↓>, <←>, <→>, <PAGE DOWN> (w d´o l o jedna,

”strone”),,

<PAGE UP> (w g´ore o jedn, a,

”strone”),, <HOME> (poczatek wiersza),, <END> (koniec wier- sza), <CTRL+HOME> (poczatek pliku),, <CTRL+END> (koniec pliku).

– Zaznaczanie fragmentu tekstu bez u˙zycia myszy: <SHIFT+...>, zob.”zmiana pozycji karetki”.

(16)

0.3. ORGANIZACJA PRACY W ´SRODOWISKU R I RSTUDIO 13

– W laczanie i wy l, acznie trybu zast, epowania (ang. overwrite/insert mode): klawisz,

Klawisz<INSERT>

czasem

wciska sie”, przez przypadek — warto zna´c.

<INSERT>.

– Wyszukiwanie bad´, z zastepowanie tekstu:, <CTRL+f>.

Zadanie

Powy˙zsze kombinacje klawiszy dzia laja tak˙ze w konsoli RStudio. Sprawd´, z ich dzia lanie samo- dzielnie.

Dodatkowo:

– Komentowanie bad´, z odkomentowanie aktualnego wiersza albo zaznaczonego bloku tekstu: <CTRL+SHIFT+c>.

– Przechodzenie do wskazanego wiersza tekstu: <CTRL+g>. Nota bene, aktualny nu- mer wiersza i kolumny wypisany jest bezpo´srednio pod oknem edycji w formacie wiersz:kolumna.

– Tabulacja (wciecie tekstu) i detabulacja: odwiednio, <TAB> i <SHIFT+TAB>.

– Zamkniecie okna edycji:, <CTRL+W>.

A czy kto´s wie, do czego s lu˙zy<ALT+TAB>,

<ALT+F4> i <CTRL+ESC>?

Pamietajmy, ˙ze, klawiatura jest naszym

”przyjacielem”i ˙ze wiekszo´, s´c czynno´sci mo˙zemy o wiele szybciej wykona´c za jej pomoca bez dotykania myszy.,

Informacja

Warto wiedzie´c, ˙ze mo˙zemy przenosi´c karetke mi, edzy edytorem a konsol, a za pomoc, a, klawiszy<CTRL+1> oraz <CTRL+2>.

Do pewnych technicznych aspekt´ow organizacji pracy w ´srodowisku RStudio bedziemy, od czasu do czasu powraca´c. Jednak˙ze od tej pory zak ladamy, ˙ze ka˙zdy z nas potrafi wprowadza´c i wykonywa´c polecenia R-a oraz poprawia´c ewentualnie wystepuj, ace b l, edy., 0.3.5. System pomocy

R posiada bardzo rozbudowany system pomocy. Rozwa˙zmy np. funkcje, nchar(), kt´ora s lu˙zy do zliczania liczby znak´ow w danym napisie:

nchar("Hello World!")

## [1] 12

Aby otworzy´c podrecznik R-a (ang. R manual ) na stronie dotycz, acej tej funkcji piszemy:,

?nchar

Alternatywnie:

?"nchar"

help(nchar) help("nchar")

(17)

0.3. ORGANIZACJA PRACY W ´SRODOWISKU R I RSTUDIO 14

Informacja

Zapis u˙zywajacy cudzys low´, ow jest przydatny, gdy chcemy uzyska´c pomoc m.in. na temat operator´ow, np."+".

Wiekszo´, s´c stron podrecznika R-a sk lada si, e z nast, epuj, acych dzia l´, ow:

1. Og´olny opis obiektu (Description) — np. do czego s lu˙zy dana funkcja.

2. Spos´ob u˙zycia (Usage) — np. lista wszystkich parametr´ow funkcji.

3. Parametry (Arguments) — okre´sla szczeg´o lowo znaczenie poszczeg´olnych parame- tr´ow wymienionych w sekcji Usage.

4. Informacje szczeg´o lowe (Details) — podaje np. sytuacje, w kt´orych mo˙zna u˙zy´c danej funkcji, szczeg´o ly techniczne, krytyke stosowanych algorytm´, ow, informacje na temat wydajno´sci i z lo˙zono´sci obliczeniowej.

5. Warto´s´c zwracana (Value) — dok ladna specyfikacja postaci obiektu, kt´ory powstaje w rezultacie dzia lania danej funkcji.

6. Bibliografia (References) — wykaz ksia˙zek i artyku l´, ow w kt´orych np. mo˙zna znale´z´c opis u˙zytych algorytm´ow.

7. Odno´sniki (See Also) np. do innych funkcji o podobnym dzia laniu.

8. Przyk lady u˙zycia (Examples) — kod R-a do przestudiowania i uruchomienia.

Mo˙zna te˙z uzyska´c pomoc

”na tematy og´olne”, np.:

?Math

Podrecznik R-a mo˙zna przeszukiwa´, c za pomoca polece´, n:

??character

help.search("character") # równowa»nie

Zapamietaj,

W razie potrzeby jak najcze´,sciej wyszukujmy interesujace nas informacje w internecie, samodzielnie. Dzieki temu pog l, ebimy nasz, a wiedz, e i nabierzemy wprawy w znajdy-, waniu alternatywnych sposob´ow implementacji rozwiazywanych przez nas zagadnie´, n.

Polecamy korzystanie m.in. z wyszukiwarki rseek.org, forum stackoverflow.com, bad´, z z dostepnej,

”konkurencyjnej” literatury.

Informacja

W konsoli R-a zosta l zaimplementowany mechanizm podpowiedzi i uzupe lniania wpro- wadzanych nazw obiekt´ow. Po wpisaniu

”ca” i naci´snieciu klawisza, <TAB> ujrzymy liste,

(18)

BIBLIOGRAFIA 15

obiekt´ow R-a, kt´orych identyfikatory zaczynaja si, e od w la´, snie tego napisu. W´sr´od nich znajduje sie oczywi´, scie funkcjacat().

W RStudio dostepna jest tak˙ze kombinacja klawiszy, <CTRL+SPACJA>, dzia lajaca, bardzo podobnie — tak˙ze w edytorze.

Bibliografia

[1] R.A. Becker, J.M. Chambers, A.R. Wilks. The New S Language. Chapman & Hall, 1998.

”The Blue Book ”.

[2] J.M. Chambers. Programming with Data. Springer, 1998.

”The Green Book ”.

[3] W.N. Venables, B.D. Ripley. S Programming. Springer, 2000.

(19)

M

AREK

G

AGOLEWSKI,

Programowanie

i analiza danych w

1. Podstawowe typy atomowe: wektory i NULL

Materia ly dydaktyczne (preskrypt) przygotowane dla student´ow matematyki na Wydziale Matematyki i Nauk Informacyjnych Politechniki Warszawskiej

[Ostatnia aktualizacja: 25 wrze´snia 2012 r.]

Copyright© 2012 Marek Gagolewski, Wszelkie prawa zastrze˙zone

Warszawa 2012

(20)

SPIS TRE´SCI 0

Spis tre´ sci

1.1. Podstawowe i z lo˙zone typy danych . . . 1

1.2. Wektory warto´sci logicznych . . . 2

1.3. Wektory liczbowe i zespolone . . . 4

1.4. Wektory napis´ow . . . 6

1.5. Hierarchia typ´ow . . . 7

1.6. Tworzenie obiekt´ow nazwanych (deklaracja zmiennych) . . . 10

1.7. Operatory . . . 12

1.7.1. Operatory arytmetyczne . . . 12

1.7.2. Operatory logiczne . . . 14

1.7.3. Operatory relacyjne . . . 15

1.7.4. Operator indeksujacy. Filtrowanie danych . . . ., 16

1.7.5. Priorytety operator´ow . . . 18

1.8. Przeglad funkcji wbudowanych . . . ., 20

1.8.1. ”Zwektoryzowane” funkcje matematyczne . . . 20

1.8.2. Agregacja danych . . . 23

1.8.3. Inne funkcje . . . 24

1.9. Braki danych (NA), warto´sci nie-sko´nczone i nie-liczby . . . 28

1.10. Uwaga: ograniczenia arytmetyki liczbowej . . . 30

1.11. Typ pusty (NULL) . . . 33

Bibliografia . . . 35

Informacja

Niniejsze materia ly dydaktyczne wcia˙z s, a dalekie od doskona lo´, sci. Je´sli znajdziesz w nich b ledy, czego´, s nie rozumiesz, bad´, z uwa˙zasz, ˙ze pomina lem co´, s istotnego, bardzo Cie prosz, e o stosown, a informacj, e na m´, oj adres e-mail: M.Gagolewski@mini.pw.edu.pl.

Dziekuj, e.,

,

(21)

1.1. PODSTAWOWE I Z LO ˙ZONE TYPY DANYCH 1

1.1. Podstawowe i z lo˙zone typy danych

Ka˙zdy jezyk programowania mo˙zna postrzega´, c jako narzedzie, za pomoc, a kt´, orego in- struujemy komputer, w jaki spos´ob ma przekszta lca´c dane wej´sciowe tak, by wygenerowa´c interesujace nas dane wyj´, sciowe. Okazuje sie, ˙ze bardzo cz, esto w przetwarzanych,

”jednost- kach informacji” da sie znale´, z´c na poziomie og´olnym pewne podobie´nstwa. Na przyk lad, w pewnym fragmencie programu pewien obiekt mo˙ze by´c reprezentowany w postaci sko´n- czonego ciagu liczb naturalnych oraz napisu. To, co w matematyce znamy pod poj, eciem, zbioru lub dziedziny w R bedziemy okre´, sla´c mianemtypu danych.

Typy danych w R mo˙zna sklasyfikowa´c w nastepuj, acy spos´, ob:

1. typy podstawowe (ang. basic types):

(a) typy atomowe (ang. atomic):

– wektor warto´sci logicznych (typ podstawowy logical, zob. rozdz. 1.2), – wektor warto´sci ca lkowitych (typ podstawowyinteger, zob. rozdz. 1.3), – wektor warto´sci rzeczywistych (typ podstawowy double, zob. rozdz. 1.3), – wektor warto´sci zespolonych (typ podstawowy complex, zob. rozdz. 1.3), – wektor napis´ow (typ podstawowy character, zob. rozdz. 1.4),

– typ pusty (typ podstawowyNULL, zob. rozdz. 1.11), (b) typy o strukturze rekurencyjnej (ang. recursive), m.in.:

– funkcja (typ podstawowy closure, zob. rozdz. 2), – lista (typ podstawowylist, zob. rozdz. 3),

– ´srodowisko (typ podstawowyenvironment, zob. rozdz. XXX),

– symbol, wywo lanie, ciag instrukcji (typy podstawowe, symbol, call, expression, zob. rozdz. XXX),

2. typy z lo˙zone (ang. compound types), kt´ore reprezentowane sa w pami, eci komputera, za pomoca obiekt´, ow typ´ow podstawowych, m.in. om´owione w rozdz. 4:

– macierz i tablica (matrix oraz array),

– czynnik (factor), s lu˙zacy do przechowywania danych typu jako´, sciowego (nie- wielka liczba mo˙zliwych, etykietowanych warto´sci),

– szereg czasowy (ts),

– ramka danych (data.frame), s lu˙za do przechowywania informacji w formie,

”ta- belek” znanych chocia˙zby z program´ow Excel, SPSS czy Statistica.

W tym rozdziale poznamy spos´ob tworzenia obiekt´ow typu atomowego, czyli o jednorod- nej strukturze. Dodatkowo, zaprezentujemy najwa˙zniejsze operacje, kt´ore mo˙zna na nich wykonywa´c. W kolejnych rozdzia lach rozszerzymy nasza wiedz, e o pozosta le typy pod-, stawowe, sposoby deklaracji funkcji (cho´c funkcji wbudowanych bedziemy u˙zywa´, c ju˙z za chwile) i instrukcje steruj, ace j, ezyka R. Na tych solidnych fundamentach b, edziemy budowa´, c nasza umiej, etno´, s´c zastosowania R-a w r´o˙znych obszarach praktyki. Tym samym, bardzo szybko oka˙ze sie, ˙ze niema la liczba zagadnie´, n omawianych w dalszej cze´,sci ksia˙zki b, edzie, ju˙z tylko pewnego rodzaju

”dodatkiem” do mechanizm´ow przedstawionych w rozdz. 1–3.

(22)

1.2. WEKTORY WARTO´SCI LOGICZNYCH 2

Informacja

Typ podstawowy ka˙zdego obiektu mo˙zemy pozna´c wywo lujac funkcj, e, typeof(): typeof("Hello World!")

## [1] "character"

1.2. Wektory warto´ sci logicznych

oralska teoria poznania owi, ˙ze sa trzy prawdy:,

´

swiento prowda, tyz prowda i g. . . prowda.

W R zdefiniowane sa,dwie sta le logiczne:TRUE (prawda) oraz FALSE (fa lsz). TRUE i FALSE to tzw. zarezerwowane s lowa kluczowe. Dla wygody, okre´slone zosta ly tak˙ze ich synonimy (kt´ore ju˙z s lowami kluczowymi nie sa, zob. rozdz. 1.6), odpowiednio, T i F.

TRUE # albo T

## [1] TRUE

typeof(F) # albo FALSE

## [1] "logical"

Zapamietaj,

R jest jezykiem, w kt´, orym wielko´s´c liter ma znaczenie (ang. case-sensitive language).

Dlatego gdyby´smy powy˙zej odwo lali sie do,

”false” bad´, z

”TypeOf”, to nie uzyskamy tego, o co nam chodzi.

Aby stworzy´c wektor (ciag) sk ladaj, acy si, e z zadanych warto´, sci logicznych, mo˙zemy u˙zy´c funkcjic() (od ang. concatenate, czyli z lacz).,

c(T, F, T, F, T)

## [1] TRUE FALSE TRUE FALSE TRUE

c(c(T, F), c(F, T)) # ,,spªaszczenie'' dwóch wektorów

## [1] TRUE FALSE FALSE TRUE

Na marginesie, za chwile oka˙ze si, e, ˙ze funkcja, c() dzia la w bardzo og´olny i elastyczny spos´ob — mo˙zemy za jej pomoca tworzy´, c tak˙ze wektory innych typ´ow oraz om´owione

w rozdz. 3 listy. leng th, wid th, heig ht,

. . .

D lugo´s´c wektora zwracana jest przez funkcje, length(). length(c(T, T, F))

## [1] 3

(23)

1.2. WEKTORY WARTO´SCI LOGICZNYCH 3

Zapamietaj,

W R nie ma typowych warto´sci skalarnych. Nawet pojedyncza warto´s´c logiczna prze- chowywana jest w postaci wektora o d lugo´sci 1.

length(FALSE)

## [1] 1

c(F) # to samo, co po prostu ,,F''

## [1] FALSE

Takie ujednolicenie znakomicie u latwia prace z R-em w zastosowaniach praktycz-, nych i naukowych. Dzieki temu nie musimy rozpatrywa´, c oddzielnych przypadk´ow dla warto´sci skalarnej oraz wektora np. w pisanych przez nas funkcjach.

Wektory mo˙zemy stworzy´c tak˙ze przez powt´orzenie (repetycje) zadanych warto´, sci z u˙zyciem funkcjirep() (od ang. repeat ).

rep(T, 3)

## [1] TRUE TRUE TRUE

Jak widzimy, powy˙zsza instrukcja zwraca wektor, w kt´orym warto´s´c TRUE zosta la powt´o- rzona trzy razy.

Zadanie

Zajrzyj teraz do dokumentacji funkcjirep()wywo lujac, ?rep albo wpisujac do swojej ulubio-, nej wyszukiwarki internetowej fraze,

”R Documentation rep”. Stad mo˙zesz dowiedzie´, c sie,,

˙ze rep() mo˙ze przyjmowa´c jako drugi argument parametry o nazwach times, each lub length.out.

W powy˙zszym przyk ladzie to w la´snie argumenttimesjest ustawiany domy´slnie. Dla- tego dwie nastepuj, ace instrukcje s, a r´, ownowa˙zne.

rep(c(T, F), 3)

## [1] TRUE FALSE TRUE FALSE TRUE FALSE rep(c(T, F), times = 3) # to samo

## [1] TRUE FALSE TRUE FALSE TRUE FALSE

Aby nada´c warto´s´c argumentowieachmusimy ju˙z poda´c jego nazwe w spos´, ob jawny.

rep(c(T, F), each = 3) # powtórz ,,ka»dy''

## [1] TRUE TRUE TRUE FALSE FALSE FALSE

rep(c(T, F), , , 3) # to samo, ale zapis maªo czytelny /each jest 4. argumentem/

## [1] TRUE TRUE TRUE FALSE FALSE FALSE

Widzimy, ˙ze zachowanie funkcjirep()zmieni lo sie. Zamiast repetycji ca lego wektora przez,

”zawijanie”, ka˙zda warto´s´c zosta la powt´orzona kolejno.

Okre´slenie warto´sci argumentulength.outs lu˙zy do tworzenia wektora o zadanej d lu- go´sci wyj´sciowej.

rep(c(T, F), length.out = 3)

## [1] TRUE FALSE TRUE

(24)

1.3. WEKTORY LICZBOWE I ZESPOLONE 4

rep(c(T, F), , 3) # to samo, ale zapis maªo czytelny

## [1] TRUE FALSE TRUE

Tutaj zasada dzia lania podobna jest do tej, kt´ora cechuje argumenttimes, a nieeach. Informacja

W R nie trzeba podawa´c pe lnych nazw argument´ow przy wywo laniu funkcji. Braku- jac, a cz,,s´c nazwy R postara sie sam odgadn,,c. Wobec tego, poni˙zsze instrukcje daja, w efekcie ten sam wynik.

rep(c(T, F), length.out = 3)

## [1] TRUE FALSE TRUE

rep(c(T, F), length = 3) # to samo

## [1] TRUE FALSE TRUE rep(c(T, F), l = 3) # to samo

## [1] TRUE FALSE TRUE

rep(len = 3, c(T, F)) # zmieniona kolejno±¢, ale dobrze okre±lone

## [1] TRUE FALSE TRUE

rep(len = 3, x = c(T, F)) # pierwszy parametr nazywa si¦ x, zob. ?rep

## [1] TRUE FALSE TRUE

rep(len = 3, wektor = c(T, F)) # takiego parametru nie ma

## Error: object of type 'symbol' is not subsettable Taki mechanizm nazywamyautouzupe lnianiem.

1.3. Wektory liczbowe i zespolone

R definiuje tak˙ze trzy nastepuj, ace typy wektor´, ow (w kolejno´sci od najmniej do najbardziej og´olnego):

i) ca lkowite, o

liczbowe ii) rzeczywiste,

iii) zespolone.

Co ciekawe, liczba zespolona nie jest dla R-a warto´scia liczbow, a.,

Sta le liczbowe wprowadzamy po prostu za pomoca cyfr. W przypadku liczb nieca lko-, witych cze´,s´c dziesietn, a od u lamkowej oddzielamy kropk, a.,

1 # to jest wektor liczbowy o dªugo±ci jeden, zob. length(1)

## [1] 1

c(1, -2, +3, 4., -.5) # ró»ne ,,chwyty'' dozwolone

## [1] 1.0 -2.0 3.0 4.0 -0.5 rep(3.14, 2)

## [1] 3.14 3.14

Mo˙zna tak˙ze u˙zywa´c tzw.notacji naukowej, w kt´orej literka

”e” s lu˙zy do

”przesuwania”

kropki dziesietnej, np., 1.2e-2 oznacza 1,2 · 10−2. 1.2e-2

## [1] 0.012

Cytaty

Powiązane dokumenty

[r]

ANALIZA II 30 pa´ zdziernika 2014.

[r]

[r]

W lasno´ sci dodawania wek- tor´ ow i mno˙zenia przez liczb¸ e.. (2) Definicja liniowej zale˙zno´ sci uk ladu

Do wystawienia oceny z przedmiotu brany jest wynik ostatniego zaliczenia wyk ladu (albo suma punkt´ow z obu cz¸e´sci zaliczenia je´sli student zalicza l na raty i nie poprawia l).

Do liczby punkt´ow uzyskanych na egzaminie ustnym (max. 60 punkt´ow) doliczana jest liczba punkt´ow punkt´ow uzyskanych na egzaminie pisemnym albo, w przypadku niezdawania

• Egzamin z jednej cz¸e´sci wyk ladu sk lada si¸e z 3 zada´n rachunkowych, do rozwi¸azania kt´orych trzeba wykorzysta˙c wiedz¸e dotycz¸ac¸a zaliczanej cz¸e´sci (za