26 Łagodne wprowadzenie do R
> # d teraz tworzymy inną, ciekawszą macierz, której elementami są kolejne ;
liczby całkowite
> macierz = matrix<l:6,2,3)
> macierz
> # wyświetlmy tylko drugą kolwimę tej macierzy
> macierz[,2]
[13 3 4
> # o teraz drugi wiersz
> macierz[2,3 [13 2 46
Z algebry znamy ciekawsze operacje na macierzach. Zobaczmy więc jak mnożyć macierze, jak liczyć ich wyznaczniki, odwrotności i iloczyny.
> # zacznijmy od zdefiniowania dwóch macierzy o wymiarach 2x2
> (A = B = matrix(l:4,2,2))
C.13 C.2],.
[i.3 i 3;' ‘ \
[2,3 2 4
> # pierwsza próba mnożenia, mnożone są elementy macierzy pierwszy z
pierwszym, drugi z drugim itp..
> A * B
[.13 [.2]
[2,] 4 16 -i
> * mnożenie macierzowe wykonuje się operatorem X*’/,, wynik jest inny
> A •/.*'/, B ?
[2,] 10 22
> tt policzmy wyznacznik z macierzy A
> dat (A)
[13 -2
> # i macierz odwrotną do A
> solve(A)
[.13 [.2]
> # no koniec wyznaczmy jeszcze wartości własne i wektory własne
> eigen(A) , . - •
$values
[1] 5.3722813 -0.3722813
$vectors
[1,3 -0.5657675 -0.9093767 [2,3 -0.8245648 0.4159736
To tyle tytułem rozgrzewki, nadszedł czas na trochę teorii.
Startujemy
Poniżej przedstawimy podstawy składni języka R. Przedstawimy też takie pojęcia jak typ, obiekt, konwersja itp. Opanowanie tych pojęć i poniżej opisanych informacji jest niezbędne, by móc sprawnie poruszać się po kolejnych rozdziałach.
1.5.6.1 Obiekty
Wszystko czym można operować w języku R jest obiektem. Obiekty można podzielić (nie wdając się w formalne szczegóły) na kilka typów (rodzajów):
• Typ liczbowy. Ten typ nie wymaga komentarza. Obiekty tego typu przechowują liczby, zarówno całkowite jak i rzeczywiste. Wpisując liczby dozwolona jest notacja naukowa (np. 2.5e3). Kropką dziesiętną w R jest kropka. Wyróżnioną wartością jest NaN (to skrót rozwijający się w „not a number”, czyli „nie liczba”). Ta wartość może pojawić się w wyniku wykonania niepoprawnego działania (np. próby logarytmowania liczby ujemnej). Literały Inf i -Inf określają plus i minus nieskończoność.
> 1 CO 1
> 1.5
> 1.5e5 [1] 150000
• Typ czynnikowy (nazywany również wyliczeniowym lub kategorycznym). Ten typ jest przydatny do przechowy wania wektorów wartości występujących na kilku poziomach (w kilku kategoriach). Przykładowo płeć występuje na dwóch poziomach, tzn. może przyjmować tylko dwie wartości, dlatego przechowując w R wektor danych opisujących pleć, najlepiej użyć typu czynnikowego. Zmienne tego typu są najczęściej wykorzystywane do definiowania grup. Gdy możemy, warto używać tego typu dla poprawienia efektywności. Zmienne typu czynikowego zajmują mniej miejsca w pamięci niż odpowiadające im łańcuchy znaków, można na nich szybciej wykonywać określone funkcje. Ponadto wiele funkcji R (szczególnie statystycznych) jest w stanie rozpoznać, że argument jest typu wyliczeniowego i zastosować odpowiednie działania, np. wyznaczyć liczebności poszczególnych grup itp.
Konstruktorem tego typu jest funkcja factorO. Na poniższym przykładzie konstruujemy wektor elementów typu wyliczeniowego z dwoma poziomami.
> (nz «* factor(c("sierzant", "kapitan", "sierżant", "sierżant")))
[i) sierżant kapitan sierżant sierżant
Levels: kapitan sierżant
> # zobaczmy opis tego wektora
> summary(nz) kapitan sierżant
1 3
27
W tej książce będziemy korzystać przemiennie z różnych nazw dla typu czynnikowego, zdając sobie sprawę, że przez różne grupy użytkowników jebl on różnie nazywany. Programiści języków typu C++ i niższego poziomu, przyzwyczajeni są do nazwy typ wyliczeniowy.
Nazwa'typ
kategoryczny bierze się z nazy wania możliwych wartości zmiennej danego typu kategoriami. Nazwa typ czynnikowy jeet najczęściej używana wśród statystyków, gdzie możliwe wartości odpowiadają różnym poziomom pewnego czynnika.