1 O pakiecie R
R jest obiektowym, interpretowanym, interaktywnym językiem
programowania. Jest obecnie podstawowym językiem wykorzystywanym w
statystycznej analizie danych. Jest całkowicie darmowy (oparty o
licencję GNU).
Pierwsza wersja R została stworzona na początku lat 90-tych przez
Roberta Gentlemana i Rossa Ihakę (Wydział Statystyki, Uniwersytet w
Auckland, Nowa Zelandia). Od 1997 roku rozwojem projektu kierował zespół
ponad 20 ekspertów z różnych dziedzin tj. statystyka, analiza numeryczna
czy informatyka. Od tamtego czasu grupa ta znacząco się powiększyła.
Ponadto swoje funkcje piszą naukowcy z całego świata.
Na stronie projektu można znaleźć nie tylko najnowszą wersję R, ale
również bogatą dokumentację oraz wiele darmowych podręczników: http://www.r-project.org.
1.1 R i RStudio są
darmowe - skąd ściągnąć?
R i RStudio są darmowe (miło), można bez przeszkód korzystać z nich w
domu. W przypadku zastosowań komercyjnych sugeruję dokładne zapoznanie
się z licencją.
Najłatwiej, choć nie jedyny sposób, to użycie strony:
https://posit.co/download/rstudio-desktop/
Pojawi się okno

Najpierw instalujemy R - to co oznaczone “1” na
powyższym obrazku. Link przeniesie nas na stronę, gdzie dostępne są
wersje R dla Windows, Linux i MacOs. Wybieramy odpowiednią
wersję.
Potem instalujemy RStudio, np używając przycisku
“2” jak na powyższym rysunku. W dolnej części strony są dostępne wersje
RStudio dla innych systemów operacyjnych.
1.2 Aktualizacje i
reinstalacje
Niestety, czasami zdarzają się różne “dziwne” problemy między innymi
ze zgodnością wersji. Czasami najprostszym rozwiązaniem jest
aktualizacja (czasami RStudio informuje o nowej wersji przy starcie) lub
całkowite odinstalowanie i ponowna instalacja R i RStudio. Wiem, że
marna wskazówka, ale paru osobom i kilka razy w pracowni zadziałało.
2 RStudio
RStudio jest zintegrowanym środowiskiem programistycznym dla języka
R. Posiada prosty interfejs użytkownika zbudowany wokół paska menu i
kilku okien, którego głównym celem jest zapewnienie skrótów do
niektórych z najczęściej używanych poleceń. Oczywiście te same funkcje
można wywołać, wpisując odpowiednie polecenia w oknie konsoli. RStudio
jest bardzo przydatnym narzędziem ułatwiającym debugowanie, tworzenie
pakietów, aplikacji i raportów.
Przykładowy wygląd okna RStudio
Okno edycji skryptów umożliwia tworzenie i zapisywanie
skryptów.
W oknie Konsoli wyświetlane są wyniki, można tam też
wpisywać instrukcje/polecenia.
W prawym dolnym oknie wyświetlane są rysunki (o tym na innych
zajęciach) i pomoc.
Prawe górne okno Enviroment - środowisko zawiera
m.in. informacje na temat utworzonych zmiennych.
2.1 Konsola
Pojedyncze polecenia (lub ich grupy) można wpisywać w konsoli,
zatwierdzając je Enterem.
W konsoli pojawiają się też wyniki działania poleceń.
W konsoli, za pomocą strzałek góra i dół na
klawiaturze, można wybrać z historii wcześniej wpisywane instrukcje.
W przypadku większej ilości instrukcji wygodniejsze jest utworzenie
skryptu - ciągu poleceń.
2.2 Tworzenie nowego
skryptu i zapisanie go
W menu File wybieramy New
file a następnie R Script. Plik
ten zapisujemy sobie pod wybraną nazwą w wybranym miejscu (tak żeby nie
utracić zapisanej pracy).
2.3 Praca ze
skryptami
Pojedyncze komendy lub ich grupy wykonuje się poprzez ich zaznaczenie
i naciśnięcie Ctrl+Enter lub naciśnięciu przycisku
Run (znajdującego się w górnej prawej części okna Edycji
skryptów).

2.4 Pliki i raporty R
Markdown
Do prezentacji wyników, kodów i innych elementów wykonywanych w R
wygodne są pliki R Markdown. Umożliwiają one połączenie kodów R, tekstu,
grafiki oraz symboli matematycznych.
Z Menu File wybieramy New
file a następnie R
Markdown….
Pojawi się okienko

gdzie możemy uzupełnić tytuł, autora i datę (można je zmienić
później) i klikamy OK. Plik zapisujemy pod
wybraną nazwą w OBOWIĄZKOWO wybranym folderze
(pojawią się tam dodatkowe pliki, więc lepiej żeby nie był to pulpit, a
wybrany, specjalnie utworzony folder).
Kliknięcie przycisku Knit w górnej części okna spowoduje
wygenerowanie raportu Markdown oraz utworzenie w folderze pliku html z
raportem.

2.4.1 Zadanie
Przejrzeć strukturę pliku źródłowego R Markdown. Zwrócić uwagę
na:
Preambuła, gdzie można zmienić autora, nazwę oraz datę:

tej części kodu - nie ruszamy

Możliwość przełączenia między trybami source oraz
visual - wypróbować działanie

Wpisywanie zwykłego tekstu, nagłówków itp
Wpisywanie kodu R - jak zaczniemy pracę, stanie się jasne, co
jest kodem R - otoczonego odpowiednimi znacznikami:

Dodanie kodu R (znaczników) jest możliwe także za pomocą
przycisku w prawej górnej części okna skryptów (zielone C)

2.5 Wybrane ustawienia
RStudio
2.5.1 Sprawdzanie
pisowni
Warto włączyć sprawdzanie pisowni, czy to w języku polskim czy
angielskim. W tym celu wybieramy w menu Tools
pozycje Global Options… a następnie:

2.5.2 Wygląd edytora
Wybieramy w menu Tools pozycje
Global Options… a następnie:

2.6 Instalowanie i
ładowanie dodatkowych pakietów
2.6.1 Polecenie w R do
instalowania i ładowania bibliotek
Istotną zaletą R jest duża liczba wyspecjalizowanych bibliotek
(pakietów).
Do instalowania bibliotek służy polecenie
install.packages(), gdzie w nawiasie podajemy nazwę
instalowanej biblioteki. Daną bibliotekę instalujemy tylko
raz na danym urządzeniu. Przykład:
Po zainstalowaniu, gdy chcemy skorzystać z biblioteki, musimy
za każdym razem dołączyć wybraną bibliotekę poleceniem
library():
2.6.2 Alternatywny sposób
instalowania pakietu
Być może wygodniejszy sposób to wybranie z menu Tools
polecenia Install Packages... i poprzez okno wyszukiwarki
znaleźć odpowiedni pakiet:

Gdy otworzymy skrypt lub plik Markdown, który zawiera
niezainstalowany pakiet, pojawia się też monit z informacją o braku
pakietu i sugestią jego zainstalowania:
3 Wprowadzenie do R
3.1 Inicjowanie zmiennych
w R
Zmienne w R inicjuje się przez przypisanie do nich wartości za pomocą
operatora przypisania <- lub =. Operator
<- jest tradycyjnie preferowany w R, natomiast ich
działanie jest takie samo. Na przykład, liczba <-10,
miasto = "Krakow". Aby szybko wpisać <-
wciśnij alt+-.
3.1.1 Zadanie
Wpisać w konsoli kolejno polecenia liczba <-10,
miasto = "Krakow" każde z nich zatwierdzając
Enterem.
3.2 Wyświetlanie
wyników
Gdy chcemy wiedzieć, co zawiera dany obiekt/zmienna, można wpisać
jego nazwę w konsoli lub w skrypcie. Następnie wyświetlana jest
zawartość obiektu w konsoli. W RStudio można również zajrzeć do okna
“środowisko” Enviroment (domyślnie w prawym górnym rogu),
które zawiera wszystkie zmienne występujące w środowisku pracy. W tej
chwili nasze środowisko pracy zawierać powinno 2 obiekty o nazwach
liczba oraz miasto.
Aby uniknąć błędów programistycznych podczas pracy z R, należy
regularnie sprawdzać, co znajduje się w tworzonych obiektach.
Wykonując kolejne ćwiczenia należy wykonując kolejne
linie poleceń sprawdzać, czy zostały utworzone nowe obiekty lub czy
istniejące obiekty zostały zmodyfikowane (tak jest, gdy pojawia się znak
= lub <-), a gdy tak jest, to co te obiekty zawierają.
3.3 Pomoc
Aby uzyskać pomoc na temat konkretnej funkcji lub pakietu, można użyć
funkcji help() lub znaku zapytania ?, np.
help(sum) ?sum
3.4 Zarządzanie
środowiskiem pracy
Możliwe jest usuwanie utworzonych obiektów za pomocą funkcji
rm() lub z menu okna ‘środowisko/Enviroment’ (wyszukując
obiekt, a następnie używając przycisku z miotłą). Wykonaj polecenie
rm(liczba) i sprawdź, czy zmienna liczba
zniknęła ze środowiska pracy. Spróbuj usunąć inną zmienną ustawiając w
oknie ‘środowisko’ Grid (kliknij strzałkę przy List i zmień na Grid), a
następnie zaznacz zmienną do usunięcia i wykorzystaj przycisk miotły.
Naciśnięcie przycisku miotły przy opcji List spowoduje usunięcie
wszystkich zmiennych. Natomiast kombinacja Ctrl+L czyści
konsolę.
Za pomocą polecenia rm(list = ls()) można wyczyścić całe
środowisko pracy. Polecenie to można umieścić na początku skryptu R, aby
mieć pewność, że pracujemy w “czystym” środowisku.
3.5 Komentarze
Aby dodać komentarz w kodzie/skrypcie R używamy znaku #.
Komentarzem jest wtedy cała linijka występująca po tym znaku.
Aby zakomentować blok kodu (kilka linijek) w skrypcie, zaznaczamy
wybrane linie kodu, a następnie korzystamy z kombinacji
Ctrl+Shift+c. Ponowne użycie tej kombinacji usuwa
komentarze z zaznaczonych linijek.
4 Struktury danych
Najczęściej dane w R przyjmują formę wektorów (dzisiaj), list i ramek
(kolejne zajęcia).
Wektory są podstawową struktura danych. Każda liczba traktowana jest
jako wektor jednoelementowy. Wektory budowane są przy użyciu funkcji
c().
4.1 Wektory
Wykonaj i przeanalizuj poniższe komendy wpisując je
w górne lewe okno RStudio. Uwaga: część tekstu
występująca po znaku # to komentarz. Pojedyncze komendy lub ich grupy
wykonuje się poprzez ich zaznaczenie i naciśnięcie
Ctrl+Enter lub naciśnięciu przycisku Run
(znajdującego się w górnej prawej części okna poleceń).
a1 = c(5,6,1)
#Tworzenie wektora
a2 <- c(4.3,-5)
a=c(a1,a2)
# Łączenie wektorów
tekst=c("auto","traktor")
#Utworzenie wektora, którego elementami są ciągi znaków
a1[1]
# [ ] jest używany do dostępu do współrzędnych wektora
a1[0]
# Indeksem pierwszego elementu jest 1 (w Pythonie jest to 0)
a1[1]=0
# Przypisuje pierwszej współrzędnej wektora a1 wartość 0
a1[c(2,4)]
#Wypisanie 2 i 4 współrzędnej wektora a1
d=a1[c(1,3)]
#Wektor d utworzony został z 1 i 3 współrzędnej wektora a1
x=3:14
#x jest wektorem 12-sto elementowym o współrzędnych 3,4,…,14
x[1:5]=1
#Przypisanie pierwszym pięciu współrzędnym wektora x wartości 1
2*a1
#Mnożenie każdej współrzędnej wektora a1 przez 2
e=3/d
#Zauważ, że 1/0 = Inf
f=a1-4
#Odejmowanie 4 od każdej współrzędnej wektora a
d1=d+e
d1=d1-e
#Zauważ, że Inf-Inf=NaN (“Not a Number”)
d*e
#Mnożenie wektorów współrzędna po współrzędnej
e/d
#Dzielenie wektorów współrzędna po współrzędnej
sum(d)
#Oblicz sumę współrzędnych wektora d
length(d)
#Długość wektora d
t(d)
#Transpozycja wektora d
t(d)%*%e
# %*% jest operatorem mnożenia macierzowego
4.2 Funkcje
matematyczne
R jest wyposażony w bogaty zestaw funkcji matematycznych, które można
wykorzystywać do zaawansowanych obliczeń i analiz danych. Przykładowo,
można obliczyć
g <- c(sqrt(2), log(10)) * (1 + exp(2)) / cos(8).
4.2.1 Zadanie
Zainicjuj dwa wektory: a=[4,0.5, 7, 0.5] oraz b=[2,0.1,3, 5.2]
- Policz średnią dla wektora a.
- Policz iloczyn skalarny a \(\circ\)
b.
- Policz średnią ważoną, elementów wektora a, gdzie wagi są określone
w wektorze b.
- Oblicz odległość euklidesową pomiędzy wektorami a i b (traktując je
jako punkty).
4.3 Testy logiczne
1==1
1>2
1!= 2
#Symbol != oznacza “różne od”
(1==1) & (1>2)
#Symbol & oznacza “i” (koniunkcja warunków)
(1==1) | (1>2)
#Symbol | oznacza “lub” (alternatywa warunków)
d==5
#Test na składowych wektora
a>1 & a<=5
ind=(a>1 & a<=5)
#Wynik testu jest przypisany do zmiennej ind
is.vector(a)
#Funkcja is.vector() zwracająca TRUE jeśli a jest wektorem i FALSE w
przeciwnym przypadku
is.numeric(a)
is.character(a)
mode(a)
#Zwraca typ obiektu a
a*a
a[1]='test'
a*a #Nie można mnożyć dwóch wektorów, które nie są
wektorami liczbowymi (wypróbować polecenie).
4.4 Wyodrębnianie
podzbiorów danych
Podczas operacji na zbiorach danych w statystyce często potrzeba np.
wyodrębnić osoby o określonych cechach (np. osoby płci męskiej w wieku
od 30 do 35 lat pracujące na stanowiskach kierowniczych). Użycie pętli
może wydawać się naturalne, ale nie jest optymalne z punktu widzenia
czasu obliczeń. Lepiej jest używać operacji przedstawionych w poniższych
przykładach. Ogólnie rzecz biorąc, podczas pracy z R należy unikać
pętli tak bardzo, jak to tylko możliwe.
- przy pomocy funkcji which()
x=-5:5
x<0
ind=which(x<0)
# ind zawiera numery ujemnych współrzędnych x. ‘ind’ to nazwa
zmiennej, nie ma jakiegoś istotnego znaczenia.
ind
x[ind]
x[-ind]
#znak ‘-’ pozwala uzyskać dopełnienie zbioru indeksów (w tym wypadku
numery nieujemnych współrzędnych x)
- bez użycia funkcji which()
x=-5:5
ind=x>0
#Współrzędne ind przyjmują wartości logiczne TRUE (gdy x>0) i
FALSE w przeciwnym przypadku)
x[ind]
#Zwraca wartości x większe od 0 (czyli te, dla których współrzędne
ind miały wartość TRUE)
x[x>=0]
x[x<0]=10
#Zastąpienie wartości ujemnych x przez 10
- wartości brakujące
x=1:10
mean(x)
x[10]=NA
#NA (“Not Available”) jest stosowany do kodowania brakujących
wartości (niekompletne zbiory danych)
x
mean(x)
mean(x,na.rm = TRUE)
#Oblicza średnią z elementów wektora x, pomijając wartości
brakujące
is.na(x)
which(is.na(x))
- kilka przydatnych funkcji
Uwaga: poniżej zamieszczamy fragmenty wybrane
polecenia oraz, poprzedzone znakami ##, to co powinno pojawić się w
konsoli jako wynik operacji
## [1] 1.4 1.4 3.0 3.0 5.0 5.0
## [1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
## [1] 1.575 1.625 1.675 1.725 1.775 1.825 1.875 1.925 1.975 2.025 2.075 2.125
## [13] 2.175 2.225 2.275 2.325 2.375 2.425 2.475 2.525 2.575 2.625 2.675 2.725
## [25] 2.775 2.825 2.875 2.925 2.975 3.025 3.075 3.125 3.175 3.225 3.275 3.325
## [37] 3.375 3.425 3.475 3.525 3.575 3.625 3.675 3.725 3.775 3.825 3.875 3.925
## [49] 3.975 4.025 4.075 4.125 4.175 4.225 4.275 4.325 4.375 4.425 4.475 4.525
## [61] 4.575 4.625 4.675 4.725 4.775 4.825 4.875 4.925 4.975 5.025 5.075 5.125
## [1] 1 2 3 4
## [1] -2 5 7 10
## [1] 2 1 4 3
## [1] 2
## [1] 3
## [1] 10
## [1] 3
## [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
## [1] 5 2 10 7
## [1] 1.6094379 0.6931472 2.3025851 1.9459101
## Warning in sqrt(b): NaNs produced
## [1] 2.236068 NaN 3.162278 2.645751
5 Zadania
Poniższe ćwiczenia należy wykonać bez użycia
pętli!
5.1 Zadanie
Niech \(x = (7, 9, 13, 8, 4, 2, 16, 1, 6,
19, 15, 12, 19, 14, 8, 2, 19, 11, 18, 7)\). Wypisz:
Drugi element wektora \(x\).
Pierwsze pięć elementów wektora \(x\).
Indeksy \(i\) współrzędnych
wektora \(x\), dla których \(x_i >14\).
Wszystkie elementy z wyjątkiem elementów na pozycjach 6, 10 i 12.
5.2 Zadanie
Używając tylko funkcji rep() i seq(),
wygeneruj następujące ciągi (możesz użyć funkcji c(), ale
nie bezpośrednio (np. nie pisz c(0,6,0,6,0,6) odpowiadając
na pierwsze pytanie).
- 0 6 0 6 0 6
- 1 4 7 10
- 1 2 3 1 2 3 1 2 3 1 2 3
- 1 2 2 3 3 3
- 1 1 1 2 2 3
- 1 5.5 10
- 1 1 1 1 2 2 2 2 3 3 3 3
5.3 Zadanie
Utwórz wektor \(a = (2.5, 3, 1, 0, 4,
-1)\).
Posortuj wektor \(a\) rosnąco za
pomocą funkcji sort(). Do czego służy funkcja
order? Posortuj wektor \(a\) rosnąco używając funkcji
order().
5.4 Zadanie
Obliczyć średnią harmoniczną wektora
\[H=\frac{n}{\frac{1}{a_1}+\dots+\frac{1}{a_n}},\]
gdzie \(a = (7, 13, 3, 8, 12, 12, 20,
11)\).
1 O pakiecie R
R jest obiektowym, interpretowanym, interaktywnym językiem
programowania. Jest obecnie podstawowym językiem wykorzystywanym w
statystycznej analizie danych. Jest całkowicie darmowy (oparty o
licencję GNU).
Pierwsza wersja R została stworzona na początku lat 90-tych przez
Roberta Gentlemana i Rossa Ihakę (Wydział Statystyki, Uniwersytet w
Auckland, Nowa Zelandia). Od 1997 roku rozwojem projektu kierował zespół
ponad 20 ekspertów z różnych dziedzin tj. statystyka, analiza numeryczna
czy informatyka. Od tamtego czasu grupa ta znacząco się powiększyła.
Ponadto swoje funkcje piszą naukowcy z całego świata.
Na stronie projektu można znaleźć nie tylko najnowszą wersję R, ale również bogatą dokumentację oraz wiele darmowych podręczników: http://www.r-project.org.
1.1 R i RStudio są darmowe - skąd ściągnąć?
R i RStudio są darmowe (miło), można bez przeszkód korzystać z nich w domu. W przypadku zastosowań komercyjnych sugeruję dokładne zapoznanie się z licencją.
Najłatwiej, choć nie jedyny sposób, to użycie strony:
https://posit.co/download/rstudio-desktop/
Pojawi się okno
Najpierw instalujemy R - to co oznaczone “1” na powyższym obrazku. Link przeniesie nas na stronę, gdzie dostępne są wersje R dla Windows, Linux i MacOs. Wybieramy odpowiednią wersję.
Potem instalujemy RStudio, np używając przycisku “2” jak na powyższym rysunku. W dolnej części strony są dostępne wersje RStudio dla innych systemów operacyjnych.
1.2 Aktualizacje i reinstalacje
Niestety, czasami zdarzają się różne “dziwne” problemy między innymi ze zgodnością wersji. Czasami najprostszym rozwiązaniem jest aktualizacja (czasami RStudio informuje o nowej wersji przy starcie) lub całkowite odinstalowanie i ponowna instalacja R i RStudio. Wiem, że marna wskazówka, ale paru osobom i kilka razy w pracowni zadziałało.
2 RStudio
RStudio jest zintegrowanym środowiskiem programistycznym dla języka R. Posiada prosty interfejs użytkownika zbudowany wokół paska menu i kilku okien, którego głównym celem jest zapewnienie skrótów do niektórych z najczęściej używanych poleceń. Oczywiście te same funkcje można wywołać, wpisując odpowiednie polecenia w oknie konsoli. RStudio jest bardzo przydatnym narzędziem ułatwiającym debugowanie, tworzenie pakietów, aplikacji i raportów.
Okno edycji skryptów umożliwia tworzenie i zapisywanie skryptów.
W oknie Konsoli wyświetlane są wyniki, można tam też wpisywać instrukcje/polecenia.
W prawym dolnym oknie wyświetlane są rysunki (o tym na innych zajęciach) i pomoc.
Prawe górne okno Enviroment - środowisko zawiera m.in. informacje na temat utworzonych zmiennych.
2.1 Konsola
Pojedyncze polecenia (lub ich grupy) można wpisywać w konsoli,
zatwierdzając je Enterem.
W konsoli pojawiają się też wyniki działania poleceń.
W konsoli, za pomocą strzałek góra i dół na
klawiaturze, można wybrać z historii wcześniej wpisywane instrukcje.
W przypadku większej ilości instrukcji wygodniejsze jest utworzenie skryptu - ciągu poleceń.
2.2 Tworzenie nowego skryptu i zapisanie go
W menu File wybieramy New file a następnie R Script. Plik ten zapisujemy sobie pod wybraną nazwą w wybranym miejscu (tak żeby nie utracić zapisanej pracy).
2.3 Praca ze skryptami
Pojedyncze komendy lub ich grupy wykonuje się poprzez ich zaznaczenie
i naciśnięcie Ctrl+Enter lub naciśnięciu przycisku
Run (znajdującego się w górnej prawej części okna Edycji
skryptów).
2.4 Pliki i raporty R Markdown
Do prezentacji wyników, kodów i innych elementów wykonywanych w R wygodne są pliki R Markdown. Umożliwiają one połączenie kodów R, tekstu, grafiki oraz symboli matematycznych.
Z Menu File wybieramy New file a następnie R Markdown….
Pojawi się okienko
gdzie możemy uzupełnić tytuł, autora i datę (można je zmienić później) i klikamy OK. Plik zapisujemy pod wybraną nazwą w OBOWIĄZKOWO wybranym folderze (pojawią się tam dodatkowe pliki, więc lepiej żeby nie był to pulpit, a wybrany, specjalnie utworzony folder).
Kliknięcie przycisku Knit w górnej części okna spowoduje
wygenerowanie raportu Markdown oraz utworzenie w folderze pliku html z
raportem.
2.4.1 Zadanie
Przejrzeć strukturę pliku źródłowego R Markdown. Zwrócić uwagę na:
Preambuła, gdzie można zmienić autora, nazwę oraz datę:
tej części kodu - nie ruszamy
Możliwość przełączenia między trybami
sourceorazvisual- wypróbować działanieWpisywanie zwykłego tekstu, nagłówków itp
Wpisywanie kodu R - jak zaczniemy pracę, stanie się jasne, co jest kodem R - otoczonego odpowiednimi znacznikami:
Dodanie kodu R (znaczników) jest możliwe także za pomocą przycisku w prawej górnej części okna skryptów (zielone C)
2.5 Wybrane ustawienia RStudio
2.5.1 Sprawdzanie pisowni
Warto włączyć sprawdzanie pisowni, czy to w języku polskim czy angielskim. W tym celu wybieramy w menu Tools pozycje Global Options… a następnie:
2.5.2 Wygląd edytora
Wybieramy w menu Tools pozycje Global Options… a następnie:
2.6 Instalowanie i ładowanie dodatkowych pakietów
2.6.1 Polecenie w R do instalowania i ładowania bibliotek
Istotną zaletą R jest duża liczba wyspecjalizowanych bibliotek (pakietów).
Do instalowania bibliotek służy polecenie
install.packages(), gdzie w nawiasie podajemy nazwę
instalowanej biblioteki. Daną bibliotekę instalujemy tylko
raz na danym urządzeniu. Przykład:
Po zainstalowaniu, gdy chcemy skorzystać z biblioteki, musimy
za każdym razem dołączyć wybraną bibliotekę poleceniem
library():
2.6.2 Alternatywny sposób instalowania pakietu
Być może wygodniejszy sposób to wybranie z menu Tools
polecenia Install Packages... i poprzez okno wyszukiwarki
znaleźć odpowiedni pakiet:
Gdy otworzymy skrypt lub plik Markdown, który zawiera niezainstalowany pakiet, pojawia się też monit z informacją o braku pakietu i sugestią jego zainstalowania:
3 Wprowadzenie do R
3.1 Inicjowanie zmiennych w R
Zmienne w R inicjuje się przez przypisanie do nich wartości za pomocą
operatora przypisania <- lub =. Operator
<- jest tradycyjnie preferowany w R, natomiast ich
działanie jest takie samo. Na przykład, liczba <-10,
miasto = "Krakow". Aby szybko wpisać <-
wciśnij alt+-.
3.1.1 Zadanie
Wpisać w konsoli kolejno polecenia liczba <-10,
miasto = "Krakow" każde z nich zatwierdzając
Enterem.
3.2 Wyświetlanie wyników
Gdy chcemy wiedzieć, co zawiera dany obiekt/zmienna, można wpisać
jego nazwę w konsoli lub w skrypcie. Następnie wyświetlana jest
zawartość obiektu w konsoli. W RStudio można również zajrzeć do okna
“środowisko” Enviroment (domyślnie w prawym górnym rogu),
które zawiera wszystkie zmienne występujące w środowisku pracy. W tej
chwili nasze środowisko pracy zawierać powinno 2 obiekty o nazwach
liczba oraz miasto.
Aby uniknąć błędów programistycznych podczas pracy z R, należy regularnie sprawdzać, co znajduje się w tworzonych obiektach. Wykonując kolejne ćwiczenia należy wykonując kolejne linie poleceń sprawdzać, czy zostały utworzone nowe obiekty lub czy istniejące obiekty zostały zmodyfikowane (tak jest, gdy pojawia się znak = lub <-), a gdy tak jest, to co te obiekty zawierają.
3.3 Pomoc
Aby uzyskać pomoc na temat konkretnej funkcji lub pakietu, można użyć
funkcji help() lub znaku zapytania ?, np.
help(sum) ?sum
3.4 Zarządzanie środowiskiem pracy
Możliwe jest usuwanie utworzonych obiektów za pomocą funkcji
rm() lub z menu okna ‘środowisko/Enviroment’ (wyszukując
obiekt, a następnie używając przycisku z miotłą). Wykonaj polecenie
rm(liczba) i sprawdź, czy zmienna liczba
zniknęła ze środowiska pracy. Spróbuj usunąć inną zmienną ustawiając w
oknie ‘środowisko’ Grid (kliknij strzałkę przy List i zmień na Grid), a
następnie zaznacz zmienną do usunięcia i wykorzystaj przycisk miotły.
Naciśnięcie przycisku miotły przy opcji List spowoduje usunięcie
wszystkich zmiennych. Natomiast kombinacja Ctrl+L czyści
konsolę.
Za pomocą polecenia rm(list = ls()) można wyczyścić całe
środowisko pracy. Polecenie to można umieścić na początku skryptu R, aby
mieć pewność, że pracujemy w “czystym” środowisku.
3.5 Komentarze
Aby dodać komentarz w kodzie/skrypcie R używamy znaku #.
Komentarzem jest wtedy cała linijka występująca po tym znaku.
Aby zakomentować blok kodu (kilka linijek) w skrypcie, zaznaczamy
wybrane linie kodu, a następnie korzystamy z kombinacji
Ctrl+Shift+c. Ponowne użycie tej kombinacji usuwa
komentarze z zaznaczonych linijek.
4 Struktury danych
Najczęściej dane w R przyjmują formę wektorów (dzisiaj), list i ramek (kolejne zajęcia).
Wektory są podstawową struktura danych. Każda liczba traktowana jest
jako wektor jednoelementowy. Wektory budowane są przy użyciu funkcji
c().
4.1 Wektory
Wykonaj i przeanalizuj poniższe komendy wpisując je
w górne lewe okno RStudio. Uwaga: część tekstu
występująca po znaku # to komentarz. Pojedyncze komendy lub ich grupy
wykonuje się poprzez ich zaznaczenie i naciśnięcie
Ctrl+Enter lub naciśnięciu przycisku Run
(znajdującego się w górnej prawej części okna poleceń).
a1 = c(5,6,1)
#Tworzenie wektora
a2 <- c(4.3,-5)
a=c(a1,a2)
# Łączenie wektorów
tekst=c("auto","traktor")
#Utworzenie wektora, którego elementami są ciągi znaków
a1[1]
# [ ] jest używany do dostępu do współrzędnych wektora
a1[0]
# Indeksem pierwszego elementu jest 1 (w Pythonie jest to 0)
a1[1]=0
# Przypisuje pierwszej współrzędnej wektora a1 wartość 0
a1[c(2,4)]
#Wypisanie 2 i 4 współrzędnej wektora a1
d=a1[c(1,3)]
#Wektor d utworzony został z 1 i 3 współrzędnej wektora a1
x=3:14
#x jest wektorem 12-sto elementowym o współrzędnych 3,4,…,14
x[1:5]=1
#Przypisanie pierwszym pięciu współrzędnym wektora x wartości 1
2*a1
#Mnożenie każdej współrzędnej wektora a1 przez 2
e=3/d
#Zauważ, że 1/0 = Inf
f=a1-4
#Odejmowanie 4 od każdej współrzędnej wektora a
d1=d+e
d1=d1-e
#Zauważ, że Inf-Inf=NaN (“Not a Number”)
d*e
#Mnożenie wektorów współrzędna po współrzędnej
e/d
#Dzielenie wektorów współrzędna po współrzędnej
sum(d)
#Oblicz sumę współrzędnych wektora d
length(d)
#Długość wektora d
t(d)
#Transpozycja wektora d
t(d)%*%e
# %*% jest operatorem mnożenia macierzowego
4.2 Funkcje
matematyczne
R jest wyposażony w bogaty zestaw funkcji matematycznych, które można
wykorzystywać do zaawansowanych obliczeń i analiz danych. Przykładowo,
można obliczyć
g <- c(sqrt(2), log(10)) * (1 + exp(2)) / cos(8).
4.2.1 Zadanie
Zainicjuj dwa wektory: a=[4,0.5, 7, 0.5] oraz b=[2,0.1,3, 5.2]
- Policz średnią dla wektora a.
- Policz iloczyn skalarny a \(\circ\)
b.
- Policz średnią ważoną, elementów wektora a, gdzie wagi są określone
w wektorze b.
- Oblicz odległość euklidesową pomiędzy wektorami a i b (traktując je
jako punkty).
4.3 Testy logiczne
1==1
1>2
1!= 2
#Symbol != oznacza “różne od”
(1==1) & (1>2)
#Symbol & oznacza “i” (koniunkcja warunków)
(1==1) | (1>2)
#Symbol | oznacza “lub” (alternatywa warunków)
d==5
#Test na składowych wektora
a>1 & a<=5
ind=(a>1 & a<=5)
#Wynik testu jest przypisany do zmiennej ind
is.vector(a)
#Funkcja is.vector() zwracająca TRUE jeśli a jest wektorem i FALSE w
przeciwnym przypadku
is.numeric(a)
is.character(a)
mode(a)
#Zwraca typ obiektu a
a*a
a[1]='test'
a*a #Nie można mnożyć dwóch wektorów, które nie są
wektorami liczbowymi (wypróbować polecenie).
4.4 Wyodrębnianie
podzbiorów danych
Podczas operacji na zbiorach danych w statystyce często potrzeba np.
wyodrębnić osoby o określonych cechach (np. osoby płci męskiej w wieku
od 30 do 35 lat pracujące na stanowiskach kierowniczych). Użycie pętli
może wydawać się naturalne, ale nie jest optymalne z punktu widzenia
czasu obliczeń. Lepiej jest używać operacji przedstawionych w poniższych
przykładach. Ogólnie rzecz biorąc, podczas pracy z R należy unikać
pętli tak bardzo, jak to tylko możliwe.
- przy pomocy funkcji which()
x=-5:5
x<0
ind=which(x<0)
# ind zawiera numery ujemnych współrzędnych x. ‘ind’ to nazwa
zmiennej, nie ma jakiegoś istotnego znaczenia.
ind
x[ind]
x[-ind]
#znak ‘-’ pozwala uzyskać dopełnienie zbioru indeksów (w tym wypadku
numery nieujemnych współrzędnych x)
- bez użycia funkcji which()
x=-5:5
ind=x>0
#Współrzędne ind przyjmują wartości logiczne TRUE (gdy x>0) i
FALSE w przeciwnym przypadku)
x[ind]
#Zwraca wartości x większe od 0 (czyli te, dla których współrzędne
ind miały wartość TRUE)
x[x>=0]
x[x<0]=10
#Zastąpienie wartości ujemnych x przez 10
- wartości brakujące
x=1:10
mean(x)
x[10]=NA
#NA (“Not Available”) jest stosowany do kodowania brakujących
wartości (niekompletne zbiory danych)
x
mean(x)
mean(x,na.rm = TRUE)
#Oblicza średnią z elementów wektora x, pomijając wartości
brakujące
is.na(x)
which(is.na(x))
- kilka przydatnych funkcji
Uwaga: poniżej zamieszczamy fragmenty wybrane
polecenia oraz, poprzedzone znakami ##, to co powinno pojawić się w
konsoli jako wynik operacji
## [1] 1.4 1.4 3.0 3.0 5.0 5.0
## [1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
## [1] 1.575 1.625 1.675 1.725 1.775 1.825 1.875 1.925 1.975 2.025 2.075 2.125
## [13] 2.175 2.225 2.275 2.325 2.375 2.425 2.475 2.525 2.575 2.625 2.675 2.725
## [25] 2.775 2.825 2.875 2.925 2.975 3.025 3.075 3.125 3.175 3.225 3.275 3.325
## [37] 3.375 3.425 3.475 3.525 3.575 3.625 3.675 3.725 3.775 3.825 3.875 3.925
## [49] 3.975 4.025 4.075 4.125 4.175 4.225 4.275 4.325 4.375 4.425 4.475 4.525
## [61] 4.575 4.625 4.675 4.725 4.775 4.825 4.875 4.925 4.975 5.025 5.075 5.125
## [1] 1 2 3 4
## [1] -2 5 7 10
## [1] 2 1 4 3
## [1] 2
## [1] 3
## [1] 10
## [1] 3
## [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
## [1] 5 2 10 7
## [1] 1.6094379 0.6931472 2.3025851 1.9459101
## Warning in sqrt(b): NaNs produced
## [1] 2.236068 NaN 3.162278 2.645751
4.1 Wektory
Wykonaj i przeanalizuj poniższe komendy wpisując je
w górne lewe okno RStudio. Uwaga: część tekstu
występująca po znaku # to komentarz. Pojedyncze komendy lub ich grupy
wykonuje się poprzez ich zaznaczenie i naciśnięcie
Ctrl+Enter lub naciśnięciu przycisku Run
(znajdującego się w górnej prawej części okna poleceń).
a1 = c(5,6,1) |
#Tworzenie wektora |
a2 <- c(4.3,-5) |
|
a=c(a1,a2) |
# Łączenie wektorów |
tekst=c("auto","traktor") |
#Utworzenie wektora, którego elementami są ciągi znaków |
a1[1] |
# [ ] jest używany do dostępu do współrzędnych wektora |
a1[0] |
# Indeksem pierwszego elementu jest 1 (w Pythonie jest to 0) |
a1[1]=0 |
# Przypisuje pierwszej współrzędnej wektora a1 wartość 0 |
a1[c(2,4)] |
#Wypisanie 2 i 4 współrzędnej wektora a1 |
d=a1[c(1,3)] |
#Wektor d utworzony został z 1 i 3 współrzędnej wektora a1 |
x=3:14 |
#x jest wektorem 12-sto elementowym o współrzędnych 3,4,…,14 |
x[1:5]=1 |
#Przypisanie pierwszym pięciu współrzędnym wektora x wartości 1 |
2*a1 |
#Mnożenie każdej współrzędnej wektora a1 przez 2 |
e=3/d |
#Zauważ, że 1/0 = Inf |
f=a1-4 |
#Odejmowanie 4 od każdej współrzędnej wektora a |
d1=d+e |
|
d1=d1-e |
#Zauważ, że Inf-Inf=NaN (“Not a Number”) |
d*e |
#Mnożenie wektorów współrzędna po współrzędnej |
e/d |
#Dzielenie wektorów współrzędna po współrzędnej |
sum(d) |
#Oblicz sumę współrzędnych wektora d |
length(d) |
#Długość wektora d |
t(d) |
#Transpozycja wektora d |
t(d)%*%e |
# %*% jest operatorem mnożenia macierzowego |
4.2 Funkcje matematyczne
R jest wyposażony w bogaty zestaw funkcji matematycznych, które można
wykorzystywać do zaawansowanych obliczeń i analiz danych. Przykładowo,
można obliczyć
g <- c(sqrt(2), log(10)) * (1 + exp(2)) / cos(8).
4.2.1 Zadanie
Zainicjuj dwa wektory: a=[4,0.5, 7, 0.5] oraz b=[2,0.1,3, 5.2]
- Policz średnią dla wektora a.
- Policz iloczyn skalarny a \(\circ\) b.
- Policz średnią ważoną, elementów wektora a, gdzie wagi są określone w wektorze b.
- Oblicz odległość euklidesową pomiędzy wektorami a i b (traktując je jako punkty).
4.3 Testy logiczne
1==1 |
|
1>2 |
|
1!= 2 |
#Symbol != oznacza “różne od” |
(1==1) & (1>2) |
#Symbol & oznacza “i” (koniunkcja warunków) |
(1==1) | (1>2) |
#Symbol | oznacza “lub” (alternatywa warunków) |
d==5 |
#Test na składowych wektora |
a>1 & a<=5 |
|
ind=(a>1 & a<=5) |
#Wynik testu jest przypisany do zmiennej ind |
is.vector(a) |
#Funkcja is.vector() zwracająca TRUE jeśli a jest wektorem i FALSE w przeciwnym przypadku |
is.numeric(a) |
|
is.character(a) |
|
mode(a) |
#Zwraca typ obiektu a |
a*a |
|
a[1]='test' |
a*a #Nie można mnożyć dwóch wektorów, które nie są
wektorami liczbowymi (wypróbować polecenie).
4.4 Wyodrębnianie podzbiorów danych
Podczas operacji na zbiorach danych w statystyce często potrzeba np. wyodrębnić osoby o określonych cechach (np. osoby płci męskiej w wieku od 30 do 35 lat pracujące na stanowiskach kierowniczych). Użycie pętli może wydawać się naturalne, ale nie jest optymalne z punktu widzenia czasu obliczeń. Lepiej jest używać operacji przedstawionych w poniższych przykładach. Ogólnie rzecz biorąc, podczas pracy z R należy unikać pętli tak bardzo, jak to tylko możliwe.
- przy pomocy funkcji which()
x=-5:5 |
|
x<0 |
|
ind=which(x<0) |
# ind zawiera numery ujemnych współrzędnych x. ‘ind’ to nazwa zmiennej, nie ma jakiegoś istotnego znaczenia. |
ind |
|
x[ind] |
|
x[-ind] |
#znak ‘-’ pozwala uzyskać dopełnienie zbioru indeksów (w tym wypadku numery nieujemnych współrzędnych x) |
- bez użycia funkcji which()
x=-5:5 |
|
ind=x>0 |
#Współrzędne ind przyjmują wartości logiczne TRUE (gdy x>0) i FALSE w przeciwnym przypadku) |
x[ind] |
#Zwraca wartości x większe od 0 (czyli te, dla których współrzędne ind miały wartość TRUE) |
x[x>=0] |
|
x[x<0]=10 |
#Zastąpienie wartości ujemnych x przez 10 |
- wartości brakujące
x=1:10 |
|
mean(x) |
|
x[10]=NA |
#NA (“Not Available”) jest stosowany do kodowania brakujących wartości (niekompletne zbiory danych) |
x |
|
mean(x) |
|
mean(x,na.rm = TRUE) |
#Oblicza średnią z elementów wektora x, pomijając wartości brakujące |
is.na(x) |
|
which(is.na(x)) |
- kilka przydatnych funkcji
Uwaga: poniżej zamieszczamy fragmenty wybrane polecenia oraz, poprzedzone znakami ##, to co powinno pojawić się w konsoli jako wynik operacji
## [1] 1.4 1.4 3.0 3.0 5.0 5.0
## [1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
## [1] 1.575 1.625 1.675 1.725 1.775 1.825 1.875 1.925 1.975 2.025 2.075 2.125
## [13] 2.175 2.225 2.275 2.325 2.375 2.425 2.475 2.525 2.575 2.625 2.675 2.725
## [25] 2.775 2.825 2.875 2.925 2.975 3.025 3.075 3.125 3.175 3.225 3.275 3.325
## [37] 3.375 3.425 3.475 3.525 3.575 3.625 3.675 3.725 3.775 3.825 3.875 3.925
## [49] 3.975 4.025 4.075 4.125 4.175 4.225 4.275 4.325 4.375 4.425 4.475 4.525
## [61] 4.575 4.625 4.675 4.725 4.775 4.825 4.875 4.925 4.975 5.025 5.075 5.125
## [1] 1 2 3 4
## [1] -2 5 7 10
## [1] 2 1 4 3
## [1] 2
## [1] 3
## [1] 10
## [1] 3
## [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
## [1] 5 2 10 7
## [1] 1.6094379 0.6931472 2.3025851 1.9459101
## Warning in sqrt(b): NaNs produced
## [1] 2.236068 NaN 3.162278 2.645751
5 Zadania
Poniższe ćwiczenia należy wykonać bez użycia pętli!
5.1 Zadanie
Niech \(x = (7, 9, 13, 8, 4, 2, 16, 1, 6, 19, 15, 12, 19, 14, 8, 2, 19, 11, 18, 7)\). Wypisz:
Drugi element wektora \(x\).
Pierwsze pięć elementów wektora \(x\).
Indeksy \(i\) współrzędnych wektora \(x\), dla których \(x_i >14\).
Wszystkie elementy z wyjątkiem elementów na pozycjach 6, 10 i 12.
5.2 Zadanie
Używając tylko funkcji rep() i seq(),
wygeneruj następujące ciągi (możesz użyć funkcji c(), ale
nie bezpośrednio (np. nie pisz c(0,6,0,6,0,6) odpowiadając
na pierwsze pytanie).
- 0 6 0 6 0 6
- 1 4 7 10
- 1 2 3 1 2 3 1 2 3 1 2 3
- 1 2 2 3 3 3
- 1 1 1 2 2 3
- 1 5.5 10
- 1 1 1 1 2 2 2 2 3 3 3 3
5.3 Zadanie
Utwórz wektor \(a = (2.5, 3, 1, 0, 4, -1)\).
Posortuj wektor \(a\) rosnąco za pomocą funkcji
sort(). Do czego służy funkcjaorder? Posortuj wektor \(a\) rosnąco używając funkcjiorder().
5.4 Zadanie
Obliczyć średnią harmoniczną wektora
\[H=\frac{n}{\frac{1}{a_1}+\dots+\frac{1}{a_n}},\]
gdzie \(a = (7, 13, 3, 8, 12, 12, 20, 11)\).