> w*ktorC-(l;8)]
[114512345
> # wybierzmy elementy wektora, podając wartości logiczne
> wektorCwektor<3]
Tl] 121212
> * inne możliwości replikacji wektora
> rap(l:6, length.out“13)
[1] 1234512345123
> rap(l:5, oach=3)
[1] 111222333444556
Jeżeli w wektorze występują wartości powtarzające się, to często będziemy ząi|j interesowani zliczeniem, ile razy poszczególne wartości występują w wektorze. Aby to sprawdzić można użyć funkcji table(base) wyliczającej liczebności wystąpiei lub funkcji rle(base) kompresującej informacje o powtórzonych elementach wekti ra (funkcją dekompresującą jest inverse.rle(base)). Funkcje te przedstawiono na,| poniższym przykładzie.
> # inicjujemy przykładowy wektor z; danymi
> wak = c£?)2,2.6,6,6,6,6,1,2,2,2,2,1,2,2,3,3,3,4,46,6,6)
> # wyznaczamy tabele liczebności
> table(wek)
wek ‘ ; .;'j
> tt pakuje informacje o liczebnościach wystąpień
> (spakWek = rle(wek))
Run Length Encoding
lengths: lot [1:10] 1214123117 M
values : nura [1:10] 1 2 1 2 1 2 3 4 46 6
> # odtwarzamy Wartości w oryginalnym wektorze, została zmieniona oryginalna kolejność
> inverse.rle(spakWek)
Cl] 122122221223334 46 66666 6
Kolejność elementów wektora można zmieniać, np. funkcjami sort O i rev(): Pierwsza porządkuje elementy wektora w kolejności rosnącej (domyślnie) lub malę-’*| jącej (gdy argument decreasing=T), druga ustawia elementy w odwrotnej kolejności.
> (wektor = c(l:3,0.5 + 1:3, 3))
[1] 1.0 2.0 3.0 1.5 2.5 3.5 3.0
> M uporządkujmy elementy wektora
> sort(wektor)
[1] 1.0 1.5 2.0 2.5 3.0 3.0 3.5
> # a teraz malejąco
> sort(wektor, decreasing = T)
Cl) 3.5 3.0 3.0 2.5 2.0 1.5 1.0
> # jeżeli chcemy pozostawić wartości brakujące
> sort(wektor, na.last = T)
Cl] 1.0 1.5 2.0 2.5 3.0 3.0 3.5
I ypy zmiennych i operacje na nich
fxgi.0 odwróćmy kolejność elementów w wek tor*o
;> jov(wektor)
I 3.0 3 5 2.5 1.5 3.0 2.0 1.0
"■'y t dokonajmy losowej permutacji, możemy do togo wykorzystać funkcję Sc-ri sampleO losującą podzbiór bez zwracania
> sample(wektor, length(wektor), F)
{lj 2.0 3.0 2.5 1.0 3.0 3.5 1.5
?:< Jeżeli chcemy wyeliminować powtarzające się elementy w wektorze, to możemy wykorzystać funkcję uniąue(base). Jej wynikiem jest wektor wszystkich elementów argumentu wejściowego pomijając powtórzenia. Tę funkcję można rów-' pięż wykorzystać do wyznaczania podzbiorów macierzy lub ramek danych zawie-niepowtarzające się wiersze lub kolumny. Odwrotne działanie ma funkcja duplicated(base), której wynikiem są indeksy powtarzających się elementów.
V-. Przydatne są też funkcje rank(base) i order(base). Ich wynikami są, odpowiednio, wektor rang odpowiadających elementom wektora i permutacja, która zmieni kolejność elementów wektora tak, by był on uporządkowany rosnąco.
> # wyznaczmy rangi elementów wektora '^■rank (wektor)
£1] 1.0 3.0 5.5 2.0 4.0 7.0 5.5
> # jaka kolejność uporządkuje wektor
> order(wektor)
••:[1) 1 4 2 5 3 7 6
Funkcje do operacji arytmetycznych przedstawione są w tabeli 2.2.
Tabela 2.2: Wybrane funkcje do arytmetycznych operacji na wektorze
Sum(base) |
Suma elementów wektora. |
diff(base) |
Różnice kolejnych par elementów wektora. |
cumsum(base) |
Suma skumulowana (ang. cumulatiuc sum). Wynikiem tej funkcji ; jest wektor, w którym na pozycji i ma sumę elementów od 1 do i z wektora wejściowego. |
prod(base) |
Iloczyn elementów wektora. |
cumprod(base) |
Iloczyn skumulowany, tak jak w przypadku cumsumO tyle, że zamiast sumy liczone są iloczyny. |
min(base) |
Wartość minimalnego elementu w wektorze. |
cummin(base) |
Skumulowana wartość minimalna, czyli wektor wartości minimalnych na podzbiorach 1. . i wektora wejściowego. |
max(base) |
Wartość maksymaluego elementu w wektorze. |
cummax(base) |
Skumulowana wartość maksymalna, czyli wektor wartości maksymalnych na podzbiorach 1.. i wektora wejściowego. |
pmin(base) |
Wekt-or minimów. Tej funkcji można podać za argumenty dwa lub więcej wektorów lub macierz. Wynikiem jest wektor wartości, na pozycji i znajduje się wartość minimalna z elementów o indeksach |
i wśród argumentów. | |
pmax(base) |
Wektor maximów, działanie podobno do funkcji prainO tyle, że liczone są maksima. |