56 Łagodne wprowadzenie do R
y j y Prawdę mówiąc w R nie ma rzeczy niemożliwych i wyjątkowo uparij
— żś osoby mogą korzystać z najdziwniejszych możliwych nazw zmiennychil
— \ / ''• Poniżej znajduje się przykład, jak zdefiniować i używać zmiennej o nęM
3* zwie a\a. Można to zrobić korzystając z funkcji assignO iget(). Oczy4 wiście nie polecam tworzenia takich nazw ale przykład ten może się przydać w sytu-v; acjaeh, gdy R wygeneruje automatycznie jakąś bardzo dziwną nazwę dla zmiennej^! np. nazwą będzie ścieżka do jakiegoś pliku.
> # zaczynamy od dziwnego przypisania, o sposobach przypisywania jeszcze
będziemy pisać
> assign("a\a", 3)
> # sprawdźmy czy ta zmienna jest w pamięci R
> ISO [1] "a\a"
> # odczytajmy jej wartość
> get("a\a")
[1] 3
Hih.ii, i liny'II be i|iml(ln( R on the Hiibwny.
MIcIimI lirnnie fortnne(68)
Pisaliśmy już wiele o tym, że możliwości graficzne R są olbrzymie. Czas na pozną^ nie ich bliżej. Wykresy w R tworzyć można korzystając z wielu różnych funkcji, ale i! najpopularniejszym sposobem jest skorzystanie z funkcji plot O (jest to też jedna ... z najczęściej przeciążanych funkcji, co oznacza, że ma bardzo wiele wyspecjalizowani nych implementacji). Poznawanie grafiki zacznijmy od prostego przykładu.
# przygotowujemy siatkę punktów x ” seq(-2»pi,2»pi,by”0.3)
# rysujemy funkcję sin(x)
plot(x, sin(x), type»"b'',jnain“"Wykres funkcji sin(x) i cos(x) '',col="red")
# a następnie dorysowujemy do niej funkcje cos(x) lines(x, cos(x), col»''blue", type“"l")
W pierwszej linii powyższego przykładu tworzony jest wektor liczb z użyciem ? funkcji seq(). Druga linijka, to wywołanie funkcji plotO. Funkcja ta czyści okno graficzne i przygotowuje je do narysowania wykresu. Inicjuje osie, ustawia układ ' współrzędnych, określa rozmiary marginesów i robi wiele innych przygotowawczych rzeczy (więcej szczegółów przedstawionych będzie w podrozdziale poświęconym zaawansowanej grafice). Po zainicjowaniu okna graficznego funkcja plot O narysuje •$ linię łamaną łączącą punkty o współrzędnych x,y wskazanych przez jej dwa pierw-(i sze argumenty (czyli wektor x i wartość funkcji sinus w tych punktach). Gdyby podany był tylko jeden argument, to będzie on uznany za wektor współrzędnych y a za wektor x użyty będzie wektor kolejnych liczb naturalnych.
W powyższymi przykładzie funkcja plotO rysuje kolejne punkty, a następnie łą- " czy je linią. Odpowiedzialny za to postępowanie jest argument type="b" tej funkcji. Wartość "b" oznacza, że chcemy rysować zarówno linie, jak i punkty (skrót od both).
Rysunek 1.5: Wykres narysowany różnymi rodzajami linii
W trzeciej linii przykładu wartość type="l" oznacza, że rysowaue mają być wyłącznie linie. Inne możliwe wartości tego argumentu, to p (punkty), n (nic), s (schodki), h (pionowe kreski, podobne do histogramu). Argument col funkcji plotO umożliwia wskazanie koloru w jakim ma być narysowana nowa linia. Argument main pozwala na określenie, jaki napis ma być narysowany jako tytuł wykresu. Więcej o argumentach funkcji graficznych znaleźć można w podrozdziale 4.3. Efekt działania powyższych poleceń znajduje się na rysunku 1.5.
Funkcje matematyczne można rysować korzystając również z funkcji curve(). Pierwszym argumentem jest wyrażenie (funkcja) zmiennej x, które ma być narysowane, kolejne dwa argumenty określają końce przedziału, na którym chcemy narysować to wyrażenie. Poniżej dwa przykłady do samodzielnego sprawdzenia.
2*pi)
x
curve(sin, from » -2*pi, to * curve(x"2 - sin(x'2), -2. 2)
Kolejną bardzo przydatną funkcją graficzną jest funkcja abline(graphics). Pozwala ona na dorysowanie linii prostej podając jako argumenty współczynniki równania prostej, czyli równania y = ax + b. Jeżeli chcemy narysować linię poziomą lub pionową, to wystarczy podać tylko jedną współrzędną, odpowiednio określając argument h dla linii poziomych lub v dla pionowych.
Poniżej przedstawiono kilka przykładowych wywołań funkcji ablineO. Wynik działania tego kodu jest umieszczony na rysunku 1.0. '/a argument funkcji ablineO można również podać model liniowy otrzymany z użyciem lmCstats). W tym przypadku do wykresu dorysowana będzie prosta rcgiesjl (pozostawiam to czytelnikowi do samodzielnego sprawdzenia).
r