Poszczególnym elementom wektora możemy nadawać nazwy, jesli chcemy, aby był on dla nas bardziej czytelny:
poraroku <- c(zima=15, wiosna=26, lato=26, jesień=33)
poraroku
## zima wiosna lato jesień
## 15 26 26 33
Nazwy elementów mogą składać się z więcej niż 1 słowa. Na przykład, respondentów biorących udział w Polskim Generalnym Sondażu Społecznym w 2008 r. zapytano o to, w jakim stopniu zgadzają się ze stwierdzeniem: ,,Jest znacznie lepiej dla rodziny, gdy mężczyzna zarabia pieniądze, a kobieta troszczy się o dom i dzieci''. Rozkład odpowiedzi na to pytanie pokazano w tabeli poniżej:
| Odpowiedź | Liczebność |
|---|---|
| Zdecydowanie się zgadzam | 351 |
| Zgadzam się | 464 |
| Nie zgadzam się | 339 |
| Zdecydowanie się nie zgadzam | 70 |
| Trudno powiedzieć | 63 |
Aby zapisać ten rozkład w postaci wektora liczbowego, należy wykonać następujące polecenie:
pgss <- c(`Zdecydowanie się zgadzam` = 351, `Zgadzam się` = 464, `Nie zgadzam się` = 339,
`Zdecydowanie się nie zgadzam` = 70, `Trudno powiedzieć` = 63)
pgss
## Zdecydowanie się zgadzam Zgadzam się
## 351 464
## Nie zgadzam się Zdecydowanie się nie zgadzam
## 339 70
## Trudno powiedzieć
## 63
Nazwy elementom można także nadać z wykorzystaniem funkcji names(). Dla przykładu,
pgss <- c(351, 464, 339, 70, 63)
names(pgss) <- c("Zdecydowanie się zgadzam", "Zgadzam się", "Zdecydowanie się nie zgadzam",
"Nie zgadzam się", "Trudno powiedzieć")
pgss
## Zdecydowanie się zgadzam Zgadzam się
## 351 464
## Zdecydowanie się nie zgadzam Nie zgadzam się
## 339 70
## Trudno powiedzieć
## 63
Wektor zawierający nazwy elementów wektora pgss jest przykładem wektora znakowego. Wektorami zankowymi będziemy jednak zajmować się stosunkowo rzadko, dlatego nie poświęcamy im zbyt wiele uwagi w tym wprowadzeniu.
Działania na wektorach pozostawiają nazwy bez zmian:
pgss.prop <- pgss/sum(pgss) # zamiana liczebności na proporcje
pgss.prop
## Zdecydowanie się zgadzam Zgadzam się
## 0.27273 0.36053
## Zdecydowanie się nie zgadzam Nie zgadzam się
## 0.26340 0.05439
## Trudno powiedzieć
## 0.04895
round(pgss.prop, 2) # zaokrąglenie do 2. miejsca po przecinku
## Zdecydowanie się zgadzam Zgadzam się
## 0.27 0.36
## Zdecydowanie się nie zgadzam Nie zgadzam się
## 0.26 0.05
## Trudno powiedzieć
## 0.05
100 * round(pgss.prop, 2) # zamiana proporcji na odsetki
## Zdecydowanie się zgadzam Zgadzam się
## 27 36
## Zdecydowanie się nie zgadzam Nie zgadzam się
## 26 5
## Trudno powiedzieć
## 5
Jeśli interesuje nas nie tyle cały wektor, ile niektóre jego elementy, możemy wskazać te elementy za pomocą indeksu zamieszczonego w nawiasie kwadratowym następującym zaraz po nazwie wektora. Na przykład, jeśli chcemy wybrać tylko pierwszy element wektora pgss piszemy:
pgss[1]
## Zdecydowanie się zgadzam
## 351
Jeśli chcemy wybrać element drugi i czwarty, piszemy:
pgss[c(2, 4)]
## Zgadzam się Nie zgadzam się
## 464 70
Jeśli chcemy wybrać elementy od drugiego do czwartego, piszemy:
pgss[2:4]
## Zgadzam się Zdecydowanie się nie zgadzam
## 464 339
## Nie zgadzam się
## 70
Jeśli chcemy wybrać wszystkie elementy z wyjątkiem piątego, piszemy:
pgss[-5]
## Zdecydowanie się zgadzam Zgadzam się
## 351 464
## Zdecydowanie się nie zgadzam Nie zgadzam się
## 339 70
Jeśli chcemy wybrać wszystkie elementy z wyjątkiem drugiego i czwartego, piszemy:
pgss[-c(2, 4)]
## Zdecydowanie się zgadzam Zdecydowanie się nie zgadzam
## 351 339
## Trudno powiedzieć
## 63
Jeśli poszczególnym elementom wektora nadano nazwy, wówczas do wyboru elementów można wykorzystać ich nazwy:
pgss["Trudno powiedzieć"]
## Trudno powiedzieć
## 63
Przypuśćmy, że chcemy wyznaczyć skumulowany rozkład częstości odpowiedzi na cytowane wyżej pytanie z PGSS; wykorzystamy do tego funkcję cumsum(). Ponieważ jednak rozkład skumulowany ma sens tylko w przypadku zmiennych porządkowych, musimy najpierw wykluczyć ze zbioru wartości kategorię ,,Trudno powiedzieć'':
pgss1 <- pgss[-5]/sum(pgss[-5])
cumsum(pgss1)
## Zdecydowanie się zgadzam Zgadzam się
## 0.2868 0.6658
## Zdecydowanie się nie zgadzam Nie zgadzam się
## 0.9428 1.0000
Wektory logiczne składają się z wartości logicznych TRUE i FALSE. Wykorzystujemy je dość często — na przykład wtedy, gdy chcemy ze zbioru wartości wybrać tylko te, które spełniają określony warunek logiczny. Na przykład, przypuśćmy, że dany jest wektor w składający się następujących liczb:
w <- c(-9, 1, 2, 3, 4, 8)
Przypuśćmy, że chcemy sprawdzić, które wartości tego wektora są większe od 0. Wpisujemy wówczas:
w > 0
## [1] FALSE TRUE TRUE TRUE TRUE TRUE
Jeśli poszczególny element wektora w jest większy od 0, program zwraca TRUE, w postałych przypadkach — zwraca FALSE.
Jeśli chcemy z wektora w wybrać tylko wartości dodatnie, piszemy:
w[w > 0]
## [1] 1 2 3 4 8
Ponieważ warunek logiczny zamieszczony jest w nawiasie kwadratowym, oznacza on zbiór wartości wektora w, które mają zostać wybrane przez program. Wszystkie wartości, dla których warunek jest spełniony, zostaną wybrane.
Relacje logiczne w R:
a > b # a jest większe od b; >= oznacza większy lub równy
a < b # a jest mniejsze od b; <= oznacza mniejszy lub równy
a == b # a jest równe b; uwaga na podwójny znak równości
a != b # a jest różne od b
(a > b) & (b > c) # spójnik logiczny: a jest większe od b i b jest większe od c
(a > b) | (b > a) # ,,lub'': a jest większe od b LUB b jest większe od a.