Język R umożliwia wykonanie różnorodnych zadań z minimalnym

Transkrypt

Język R umożliwia wykonanie różnorodnych zadań z minimalnym
Plan Ćwiczeń
1) Format poleceń, umieszczanie komentarzy, korekty poleceń (w przypadku bardziej
skomplikowanych poleceń warto pisać je w otwartym okienku edytora i kopiować do linii
poleceń R).
Sposób zapisu liczb, stale logiczne i tekstowe.
2) Obliczenia z użyciem pojedynczych wyrażeń,
a) operatory arytmetyczne
b) - " - logiczne
c) podstawowe funkcje arytmetyczne i logiczne
d) funkcje tekstowe cat() i paste()
3) znajdowanie i zmiana kartoteki roboczej
polecenia getwd(), setwd()
4) Konstruowanie wektorów, list i ramek danych
funkcje c(), rep(), seq(), operator ":", list(), data.frame()
5) Tworzenie macierzy
funkcje: matrix(), dim(), rbind(), cbind()
6) Podstawowe operacje indeksowania wektorów i macierzy
7) operacje z udziałem wektorów i macierzy np. mnożenie wektorów i macierzy przez liczby
działania: wektor operator wektor
macierz operator macierz
mnożenie macierzy, wyznaczniki, macierze odwrotne,
rozwiązywanie układów równań liniowych
8) Czytanie danych z dysku:
funkcje scan() i read.table(), polecenie attach()
9) Rysowanie prostych wykresów liniowych i punktowych funkcje:
plot(), curve(), points(), lines(), legend(), abline()
1-9 są krótko omówione w podręczniku K. Soetaert, bardziej szczegółowo w "an Introduction
to R" , aut. W.N. Venables i D.M. Smith oraz w darmowej części podręcznika: P. Biecek
„Przewodnik po pakiecie R”
10) Histogramy - funkcja hist(), wykresy kołowe pie(), boxplot() itp.
11) Statystyki opisowe mean(), max(), min(), range(), sd(),...
różne przykłady można znaleźć na stronie: http://www.statmethods.net/
11) Regresja liniowa:
funkcja lm(), elementarna ocena wyników: summary(), wizualizacja: plot()
przykłady dopasowywania wielomianów przy użyciu funkcji lm(), użycie funkcji I()
proste przekształcenia linearyzujące regresja wielokrotna
dużo przykładów można znaleźć w podręczniku: aut. John Maindonald “Using R for Data
Analysis and Graphics - Introduction, Examples and Commentary"
12) Interpolacja pakiet polynom, użycie funkcji sklejanych: spline(), smooth.spline()
rozdział 9 w podręczniku K. Soetaert "Using R for scientific computing
13) Budowanie wlasnych funkcji
rozdział 4 w podręczniku K. Soetaert "Using R for scientific computing więcej na ten
temat: rozdz. 10, str. 42 podręcznik "An introduction to R"
wczytywanie bibliotek własnych funkcji: source()
14) Szukanie zer funkcji jednej zmiennej: uniroot(),
rozdzial 8 w podreczniku K. Soetaert "Using R for scientific computing
szukanie ekstremów: funkcja optimize()
14) Optymalizacja wielu parametrów:
funkcja optim(), można się wzorować na przykładach z dokumentacji do optim
wystarczy elementarny poziom, bez wchodzenia w detale procedur gradientowych,
15) Rysowanie wykresów 3-wymiarowych (1-2 przykłady)
funkcja persp()
bardzo dużo przykładów z kodami źródłowymi można znaleźć na
stronie: http://addictedtor.free.fr/graphiques/thumbs.php
Język R umożliwia wykonanie różnorodnych zadań (obliczenia, statystyka, wykresy ....)
z minimalnym nakładem pracy. Tą różnorodność zawdzięczamy twórcom języka, którzy
udostępniają bezpłatnie, wszystkie potrzebne narzędzia. Pisząc program w R stajemy się jego
właścicielem i możemy używać go do celów komercyjnych. Taka polityka twórców R,
spowodowała ogromny jego rozwój. Na serwerach w sieci www czyli w tzw. repozytoriach,
dostępne są biblioteki, pozwalające jak z klocków budować własne programy. Bardzo często,
jeżeli chcemy rozwiązać jakiś problem, warto sprawdzić czy ktoś już wcześniej tego nie
zrobił i czy gotowe rozwiązanie nie jest łatwo dostępne.
Aby korzystać z R w środowisku Windows uruchamiamy go wybierając ikonę
Z języka R można korzystać w dwu trybach:
 wprowadzamy polecenia z konsoli lub
 w edytorze, tworzymy skrypty (program zawierający szereg poleceń języka
R)
Pierwszy sposób:
Zaraz po uruchomieniu R dostępny jest tryb konsoli
W tym trybie, po wpisaniu po znaku zachęty ( >| ) polecenia języka R i naciśnięciu
Enter, uzyskamy natychmiastowe jego wykonanie. Napisz i naciśnij Enter:
W przykładzie została obliczona wartość wyrażenia i wypisany poniżej wynik.
Wynikiem jest tutaj jedna liczba, dlatego poprzedza ją indeks [1] (numer kolejny wyniku). W
R domyślnie operuje się na złożonych strukturach danych zawierających wiele wartości
wejściowych i/lub wiele wartości wynikowych. Stąd często wypisując jedno polecenie
dostajemy cały ciąg wyników. Napisz i naciśnij Enter:
Za „jednym zamachem” wykonaliśmy trzy działania (na liczbach naturalnych od 1 do 3)
i dostaliśmy trzy wyniki!
Spróbuj uzyskać 40 wyników dla kolejnych liczb naturalnych od 1:40. Aby oszczędzić
czas na pisanie możesz zmodyfikować poprzednie polecenie „przywołując je” strzałką do
góry (  ) a w wierszu polecenia przesuwając się strzałkami w poziomie i modyfikując jego
treść. Napisz i naciśnij Enter:
Powinieneś dostać taki wynik
Na początku drugiego wiersza rezultatów został wypisany indeks [26] dla pierwszego w
tym wierszu wyniku. Czyli zapisując jedno działanie na liczbach od 1 do 40 (1:40)
uzyskaliśmy wektor 40 elementowy zawierający 40 wyników obliczeń.
UWAGA jeżeli wpisujemy długie polecenia to mogą być zapisane w wielu wierszach.
W tym celu na początku kolejnego wiersza umieszczamy znak + (znak kontynuacji
poprzedniego wiersza).
Zarówno dane wejściowe jak i wyjściowe możemy przechowywać w zmiennych.
Zmienna to obiekt, pełniący funkcję pudełka w którym można przechowywać różne
wartości (np. znaki, ciągi znaków czyli teksty, pojedyncze wartości liczbowe lub ich ciągi,
wartości logiczne itp.).
Napisz i naciśnij Enter:
Powyżej do zmiennej WektorWejsciowy przypisano (<-) wektor (ciąg) liczb (1:40).
Pisząc nazwę tego wektora, wyświetliliśmy na ekranie jego zawartość. Następnie, do nowej
zmiennej WektorWyjsciowy, wstawiono (=) wyniki operacji na składowych wektora
wejściowego i wyświetlono składowe wektora wynikowego.
Obszar roboczy to część pamięci komputera w której przechowywane są obiekty z
którymi aktualnie pracujemy w środowisku R. Bardzo często wartości liczbowe
przechowujemy jako zmienne, którym nadajemy jakieś nazwy. Aby zobaczyć jakie zmienne
są przechowywane w otwartym obszarze roboczym wykonujemy polecenie ls().
W trybie konsoli możemy zakończyć pracę z R wykonując polecenie q(). Zanim
program (interpreter języka R) zostanie zakończony, zostaniemy zapytani czy chcemy
zachować informacje o wykonywanych od jego otwarcia operacjach. Jeżeli zachowujemy te
informacje (obszar roboczy – workspace), możemy podać nazwę pliku. Zapisany obszar
roboczy może być w razie potrzeby ponownie wczytany (File / LoadWorkspace).
Ćwiczenia
1. Oblicz wartość 2^3. (Do czego służy operator ^ ?). Jak już wiesz do czego to
oblicz z jego pomocą pierwiastek kwadratowy z 9. Uwaga w R separatorem części
całkowitej i ułamkowej jest kropka a nie przecinek (0.5 a nie 0,5) !!! Wartość
pierwiastka umieść w zmiennej pierwiastek.
2. Liczby w postaci wykładniczej zapisujemy jako np. 1.123e-2. Logarytm dziesiętny
jako np. log10(100) (jest jak wiadomo równy 2). Oblicz ile wynosi pH roztworu o
stężeniu jonów wodorowych równym podanej liczbie wykładniczej. Wartość umieść
w zmiennej pH.
3. Ile zmiennych jest zdefiniowanych w obszarze roboczym ? Jakie są ich wartości ?
Drugi sposób:
Z menu w trybie konsoli wybierz File | New script
Zostaje otwarte okno edytora w którym możesz zapisać wiele poleceń, koniecznych do
realizacji Twojego zadania. Masz już dwa okna a może ich być jeszcze więcej. Wybierając
Windows | Tile Vertically , uzyskasz „ogląd” wszystkich okien rozmieszczonych w pionie.
Pakiety (packages) to biblioteki „gotowców” – skryptów które wykonują określone
działania np. rysowanie wykresów, wysyłanie poczty, obliczenia statystyczne itp. Jeżeli
pierwszy raz korzystamy z jakiegoś pakietu to musimy go zainstalować poleceniem
install.packages("NazwaPakietu", dependencies = TRUE)
Odtąd pakiet razem z wszystkimi jego funkcjami będzie znajdował się w folderze
library na Twoim dysku.
Aby użyć funkcji z tego pakietu musisz wcześniej włączyć go (załadować) do swojego
programu poleceniem
library(NazwaPakietu)
Przydatne pakiety:
• Rcmdr - pakiet z GUI pozwalającym na przeprowadzenie większości podstawowych statystyk bez znajomości nazw funkcji,
• stats - pakiet z większością podstawowych funkcji statystycznych,
• graphics - pakiet z funkcjami do rysowania wykresów.
Po każdym uruchomieniu platformy R, ładowane są pakiety podstawowe takie jak base,
graphics, stats i tych nie trzeba ładować.
Pomoc w R
?nazwa.funkcji - wyświetla informacje o danej funkcji,
args(nazwa.funkcji) - wyświetla listę argumentów dla danej funkcji,
example(nazwa.funkcji) - uruchamia skrypt z przykładowymi wywoływaniami
poszczególnych funkcji, na początek proszę sprawdzić example(plot),
help.search(slowo.kluczowe) - przegląda opisy funkcji znajdujących się w
zainstalowanych pakietach i wyświetla te w których znaleziono zadane
slowo.kluczowe. W liście wyników znajduje się również informacja w którym
pakiecie znajdują się znalezione funkcje.
R po polsku
http://rpubs.com/zkarpinski/kalkulator
http://rpubs.com/zkarpinski/wektory_licz
http://rpubs.com/zkarpinski/wektorycd
http://rpubs.com/zkarpinski/matrices
http://rpubs.com/zkarpinski/data_import
http://rpubs.com/zkarpinski/barplots
RStudio
F2 w Rstudio otwiera dokumentację np. funkcji
Ctrl+Enter wykonuje zaznaczone polecenia
Tab uzupełnia kod, dopisuje argumenty
Ctrl+Up ostatnie polecenia lub polecenia zawierające ciągi znaków w aktualnym
wierszu
w nagłówku okna konsoli podana jest ścierzka do katalogu roboczego
Ctrl+1 — Przenosi do Edytora R
Ctrl+2 — Przenosi do okna Console
Ctrl+L — Czyści okno Console
Esc — Przerywa wykonanie R
Na zakończenie pracy wykonaj savehistory("KowalskiJ”) i wyślij utworzony w ten sposób
plik jako załącznik na adres prowadzącego ([email protected]). Oczywiście zmień
Kowalski na swoje nazwisko a J na inicjał swojego imienia (uwaga nazwy bez polskich
znaków diakrytycznych), czyli załącznik wysłany przez Łucję Włodek będzie nosił nazwę
WlodekL. Plik znajdziesz w folderze z którego uruchamiałeś R (na ogół bin).
Składnia języka R
Obiekty
Wszystko na czym można operować w języku R jest obiektem.
Obiekty można podzielić na kilka typów:
Liczba. Dozwolona jest notacja naukowa (np. 2.5e3), separatorem części całkowitej i
ułamkowej jest kropka (np. 0.123 a nie 0,123).
Łańcuchy znaków są rozpoczynane i kończone znakiem ’ lub " (np. ”kot” i ‘krowa’ to
łańcuchy znaków).
Typ logiczny. Obiekty tego typu przechowują jedną z dwóch wartości. Logiczna prawda to T
lub TRUE, logiczny fałsz to F lub FALSE.
Wektor to uporządkowany zbiór obiektów tego samego typu. Konstruktorem wektora
(sposobem na utworzenie obiektu typu wektor) jest deklaracja c(). (Deklaracja to zapis
informujący o tworzeniu nowego obiektu np. wektora, listy....).
Przykładowo zbudujemy wektor:
trzech liczb c ( 4 , 5 , 6 )
czterech łańcuchów c(‘Ala’,’Ola’,’Kamil’,’Jerzy’)
pięciu wartości logicznych (np. odpowiedzi na pytania w kwestionariuszu) c(T,F,F,T,F)
Lista to uporządkowany zbiór różnych elementów. Elementy w liście mają własne nazwy.
Konstruktorem listy jest deklaracja list().
Przykładowa konstrukcja listy czterech obiektów to
l i s t (imie=c ( ”Anna” , ”Teresa” ) , nazwisko=”Kowalska ” , wiek=20, blondyn.ka=T)
(w tej liście zawarta jest informacja personalna o imionach, nazwisku, wieku i czy jest
blondynem/ką)
Macierz. Konstruktorem macierzy dwuwymiarowej (wiersze i kolumny) jest deklaracja
matrix(). Macierz o wymiarach 4x2 (cztery wiersze, dwie kolumny), wypełnioną zerami
można skonstruować poleceniem matrix ( 0 , 4 , 2 )
Ramka danych to macierz, w której elementy w kolumnie są tego samego typu.
Konstruktorem jest deklaracja data.frame(). Przykład ramki:
data . frame( nr=c ( 1 0 0 , 1 0 1 , 1 0 2 ) , wiek=c ( 2 5 , 2 1 , 2 2 ) , mezcyzna=c (T,T,F) )
(w ramce zawarta jest informacja z ewidencji osób, posiadających trzy kolejne numery, ich
wieku oraz płci. Uwaga w nazwie nie można użyć znaków diakrytycznych – nie może być
mężczyzna )
Typ wyliczeniowy. Stosowany do przechowywania wartości występujących na kilku
poziomach (np. w wojsku jest tylko kilka stopni służbowych). Konstruktorem jest deklaracja
factor(). Utworzymy wektor trzech elementów typu wyliczeniowego z dwoma poziomami:
factor ( c ( ” s i e r z a n t ” , ” kapitan ” , ” s i e r z a n t ” ) ) .
Typ funkcyjny. Jej konstruktorem jest deklaracja function. Przykład funkcji:
function(a,b){a*b}
Zadeklarowana funkcja, obliczy pole prostokąta o bokach podanych jako argumenty w
nawiasach okrągłych. Wzór na obliczenie jej wartości (ciało funkcji) zawarty jest w
nawiasach falistych.
Funkcji obliczającej pole prostokąta, przypisana została nazwa S. Po wywołaniu funkcji S z
podanymi argumentami, wypisana została jej wartość.
Konwersje
Najczęstsze konwersje to zamiana na typ znakowy (funkcja as.character) lub na typ
liczbowy (funkcja as.numeric). Konwertować można złożone struktury takie jak lista lub
macierz, w tym przypadku konwertowany jest każdy element listy lub macierzy.
Konwertować można też strukturę obiektu, np. funkcjami as.matrix, as.list, as.logical.
Uwaga!!! Konwertując etykiety typu wyliczeniowego na typ liczbowy należy
być ostrożnym, zaskakującym może być wynik takiej konwersji, np.
> as . numeric( factor ( c ( −2 ,2) ) )
[1]12
Bardziej oczekiwany wynik uzyskamy konwertując „po drodze” dany obiekt na
typ znakowy
> as . numeric( as . character ( factor ( c ( −2 ,2) ) ) )
[ 1 ] −2 2
Zmienne
Nazwa zmiennej powinna rozpoczynać się literą, może składać się z liter, cyfr lub symbolu
kropki. Istotna jest wielkość liter, a więc zmienne x i X to dwie różne zmienne.
Do zmiennej przypisać można wartość jednym z trzech operatorów przypisania
-> przypisuje wartość znajdującą się z lewej strony do zmiennej po prawej stronie
<- lub = przypisuje wartość znajdującą się z prawej strony do zmiennej po lewej stronie.
Sprawdź co się stanie w wyniku wykonania poniższych instrukcji:
c (13 , 13) −> zmienna . z . kropka
imie <- ”Ola”
i=4

Podobne dokumenty