• Nie Znaleziono Wyników

Wprowadzenie do R

N/A
N/A
Protected

Academic year: 2021

Share "Wprowadzenie do R"

Copied!
9
0
0

Pełen tekst

(1)

Wprowadzenie do R

Marcin Orchel

1 Środowisko R

IDE do R RStudio lub Eclipse StatET, proste GUI uruchamiane za pomocą R --gui=Tk, można również zainstalować R Commander pakiet Rcmdr, uruchamiany przez library(Rcmdr).

Link do RStudio https://www.rstudio.com/products/rstudio/download/. R dla win- dows https://cran.r-project.org/bin/windows/base/.

2 Pomoc

• R introduction https://cran.r-project.org/doc/manuals/r-release/R-intro.

pdf

• R language specification https://cran.r-project.org/doc/manuals/r-release/

R-lang.pdf

• R inferno http://www.burns-stat.com/pages/Tutor/R_inferno.pdf

• aby uzyskać informację o funkcji można użyć operatora ? https://stat.ethz.ch/

R-manual/R-patched/library/base/html/Syntax.html, https://stat.ethz.ch/

R-manual/R-devel/library/utils/html/help.html

• aby wyszukać wszystkie funkcje dla podanej frazy można użyć operatora ?? https:

//stat.ethz.ch/R-manual/R-devel/library/utils/html/help.search.html

3 Składnia i przydatne polecenia R

Komentarze w R rozpoczynają się od znaku #.

3.1 Pakiet Base

• składnia R https://stat.ethz.ch/R-manual/R-patched/library/base/html/

Syntax.html Jednym z operatorów to ? oznaczający pomoc

• operatory logiczne https://stat.ethz.ch/R-manual/R-patched/library/base/

html/Logic.html

(2)

• operatory arytmetyczne https://stat.ethz.ch/R-manual/R-patched/library/

base/html/Arithmetic.html

• operatory przypisania https://stat.ethz.ch/R-manual/R-devel/library/base/

html/assignOps.html

• operatory porównania https://stat.ethz.ch/R-manual/R-devel/library/base/

html/Comparison.html

• operator : https://stat.ethz.ch/R-manual/R-devel/library/base/html/Colon.

html

• funkcja matrix https://stat.ethz.ch/R-manual/R-devel/library/base/html/

matrix.html

• funkcja ls https://stat.ethz.ch/R-manual/R-devel/library/base/html/ls.

html

• funkcja invisible https://stat.ethz.ch/R-manual/R-devel/library/base/html/

invisible.html

• funkcja dim https://stat.ethz.ch/R-manual/R-devel/library/base/html/dim.

html

• funkcja c do łączenia argumentów https://stat.ethz.ch/R-manual/R-devel/

library/base/html/c.html

• funkcja lapply, sapply https://stat.ethz.ch/R-manual/R-devel/library/base/

html/lapply.html

• tworzenie funkcji function https://stat.ethz.ch/R-manual/R-devel/library/

base/html/function.html

• pętla for, warunek if https://stat.ethz.ch/R-manual/R-devel/library/base/

html/Control.html

• funkcja subset https://stat.ethz.ch/R-manual/R-devel/library/base/html/

subset.html

• funkcja ifelse https://stat.ethz.ch/R-manual/R-devel/library/base/html/

ifelse.html

• funkcja transform https://stat.ethz.ch/R-manual/R-devel/library/base/html/

transform.html

• funkcja strsplit https://stat.ethz.ch/R-manual/R-devel/library/base/html/

strsplit.html

• funkcja scale https://stat.ethz.ch/R-manual/R-devel/library/base/html/

scale.html

(3)

• funkcja summary https://stat.ethz.ch/R-manual/R-devel/library/base/html/

summary.html

• funkcja rm służąca m.in do czyszczenia workspace https://stat.ethz.ch/R- manual/R-devel/library/base/html/rm.html

• library oraz require https://stat.ethz.ch/R-manual/R-devel/library/base/

html/library.html do wgrywania pakietów Przykładowo library(splines)

lub

require(splines)

Lista wszystkich funkcji dla danego pakietu library(help = "splines")

• funkcja print https://stat.ethz.ch/R-manual/R-devel/library/base/html/

print.html

• funkcja source https://stat.ethz.ch/R-manual/R-devel/library/base/html/

source.html

• funkcja paste https://stat.ethz.ch/R-manual/R-devel/library/base/html/

paste.html

• funkcja proc.time https://stat.ethz.ch/R-manual/R-devel/library/base/html/

proc.time.html

• funkca system.time https://stat.ethz.ch/R-manual/R-devel/library/base/

html/system.time.html

• funkcja class i mode https://stat.ethz.ch/R-manual/R-devel/library/base/

html/class.html, https://stat.ethz.ch/R-manual/R-devel/library/base/html/

mode.html

• funkcja I, AsIs https://stat.ethz.ch/R-manual/R-devel/library/base/html/

AsIs.html

• funkcja attach https://stat.ethz.ch/R-manual/R-devel/library/base/html/

attach.html

• funkcja drop https://stat.ethz.ch/R-manual/R-devel/library/base/html/

drop.html

• funkcja range zwraca minimum i maksimum https://stat.ethz.ch/R-manual/

R-devel/library/base/html/range.html

(4)

3.2 Pakiet utils

• funkcja help https://stat.ethz.ch/R-manual/R-devel/library/utils/html/

help.html

• funkcja data https://stat.ethz.ch/R-manual/R-devel/library/utils/html/

data.html

• funkcja head https://stat.ethz.ch/R-manual/R-devel/library/utils/html/

head.html

• funkcja install.packages https://stat.ethz.ch/R-manual/R-devel/library/utils/

html/install.packages.html Służy do instalowania pakietów, po instalacji pa- kiet musi być wgrany za pomocą funkcji library. Przykładowo

install.packages("mlbench")

• funkcja methods https://stat.ethz.ch/R-manual/R-devel/library/utils/html/

methods.html

• funkcja do importowania danych z pliku csv, read.table https://stat.ethz.ch/

R-manual/R-devel/library/utils/html/read.table.html

• wyświetlanie ewaluowanego wyrażenia, umieszczenie go w nawiasach https://

stat.ethz.ch/R-manual/R-devel/library/base/html/Paren.html

3.3 Pakiet stats

• https://stat.ethz.ch/R-manual/R-devel/library/stats/html/formula.html 3.4 Pakiet splines

• opis pakietu https://stat.ethz.ch/R-manual/R-devel/library/splines/html/

splines-package.html

3.5 Pozostałe pakiety

• funkcja dist https://stat.ethz.ch/R-manual/R-patched/library/stats/html/

dist.html

• funkcja as.dist https://stat.ethz.ch/R-manual/R-patched/library/stats/html/

dist.html

• funkcja plot https://stat.ethz.ch/R-manual/R-devel/library/graphics/html/

plot.html

• funkcja points https://stat.ethz.ch/R-manual/R-devel/library/graphics/

html/points.html

(5)

• funkcja ggplot http://docs.ggplot2.org/current/ggplot.html

• funkcja cmdscale https://stat.ethz.ch/R-manual/R-devel/library/stats/html/

cmdscale.html

4 Przydatne pakiety R

• pakiet base https://stat.ethz.ch/R-manual/R-devel/library/base/html/00Index.

html

• pakiet utils https://stat.ethz.ch/R-manual/R-devel/library/utils/html/00Index.

html

• pakiet foreign do wgrywania danych z różnych formatów https://stat.ethz.ch/

R-manual/R-devel/library/foreign/html/00Index.html

• pakiet stats https://stat.ethz.ch/R-manual/R-devel/library/stats/html/

00Index.html

• pakiet graphics https://stat.ethz.ch/R-manual/R-devel/library/graphics/

html/00Index.html

• ggplot2 instalacja install.packages("ggplot2") dokumentacja http://docs.ggplot2.

org/current/

• pakiet datasets https://stat.ethz.ch/R-manual/R-devel/library/datasets/

html/00Index.html

5 Tutoriale

• https://cran.r-project.org/doc/manuals/r-release/R-lang.html

6 Różne zbiory danych

Zbiory danych znajdują się w pakiecie MASS https://stat.ethz.ch/R-manual/R- devel/library/MASS/html/00Index.html. Przykładowe zbiory danych z tego pakietu:

• https://stat.ethz.ch/R-manual/R-devel/library/MASS/html/birthwt.html

• https://stat.ethz.ch/R-manual/R-devel/library/MASS/html/Cars93.html

• https://stat.ethz.ch/R-manual/R-devel/library/MASS/html/crabs.html

• https://stat.ethz.ch/R-manual/R-devel/library/MASS/html/Cushings.html

• https://stat.ethz.ch/R-manual/R-devel/library/MASS/html/UScrime.html

(6)

Inne zbiory znajdują się w pakiecie datasets https://stat.ethz.ch/R-manual/R- devel/library/datasets/html/00Index.html

Inne zbiory danych można ściągnąć z UCI Machine Learning Repository http://

archive.ics.uci.edu/ml/datasets.html, z adresu http://lib.stat.cmu.edu/DASL/

Datafiles/

Inne zbiory http://www.personality-project.org/r/html/cities.html, https:

//www.rdocumentation.org/packages/psych/topics/cities

6.1 Operacje na wektorach i macierzach

• wektory tworzone są za pomocą funkcji c, https://stat.ethz.ch/R-manual/R- devel/library/base/html/c.html, lub seq https://stat.ethz.ch/R-manual/

R-devel/library/base/html/seq.html

• funkcja matrix do definiowania macierzy https://stat.ethz.ch/R-manual/R- devel/library/base/html/matrix.html, array może mieć więcej niż dwa wy- miary https://stat.ethz.ch/R-manual/R-devel/library/base/html/array.

html, data.frame https://stat.ethz.ch/R-manual/R-devel/library/base/html/

data.frame.html może mieć kolumny różnych typów (mode), list kolekcja obiek- tów https://stat.ethz.ch/R-manual/R-devel/library/base/html/list.html

• http://www.statmethods.net/input/datatypes.html

• operator %*% do mnożenia macierzy

• funkcja t do transponowania macierzy https://stat.ethz.ch/R-manual/R-devel/

library/base/html/t.html

• http://www.statmethods.net/advstats/matrix.html

• zwracanie części wektora, macierzy, operator [ https://stat.ethz.ch/R-manual/

R-devel/library/base/html/Extract.html lub https://stat.ethz.ch/R-manual/

R-devel/library/base/html/subset.html

• łączenie wektorów i macierzy, łączenie wektorów za pomocą c, łączenie macierzy kolumnowo i wierszowo za pomocą cbind i rbind odpowiednio, https://stat.

ethz.ch/R-manual/R-devel/library/base/html/cbind.html,

6.2 Wyświetlanie funkcji

• wyświetlanie funkcji https://stat.ethz.ch/R-manual/R-devel/library/graphics/

html/plot.html na podstawie punktów, alternatywnie https://stat.ethz.ch/

R-manual/R-devel/library/graphics/html/curve.html z podaniem funkcji, lub

https://www.rdocumentation.org/packages/graphics/topics/matplot. We funk-

cji plot, aby połączyć wyświetlane punkty należy użyć argumentu type="l". W po-

leceniu curve możemy podać liczbę punktów dla których jest ewaluowana funkcja,

parametr n.

(7)

• wyświetlanie funkcji z tą samą skalą, dla polecenia curve należy użyć parametru asp=1, podobny argument dla polecenia plot

• http://stackoverflow.com/questions/26091323/how-to-plot-a-function-curve- in-r

• wyświetlanie dwóch funkcji na jednym wykresie, polecenie lines na podstawie punktów https://stat.ethz.ch/R-manual/R-devel/library/graphics/html/

lines.html, możemy również użyć ponownie plot, ale wcześniej trzeba wykonać polecenie par(new=TRUE), dla polecenia curve możemy dodać argument add=TRUE.

http://stackoverflow.com/questions/2564258/plot-two-graphs-in-same-plot- in-r. Uwaga. Możemy też podać funkcję jako pierwszy argument do plot, ale wtedy uruchamiana jest metoda curve. Gdy chcemy dodać linię do wykresu może- my użyć polecenia abline https://stat.ethz.ch/R-manual/R-devel/library/

graphics/html/abline.html. Możemy również użyć polecenia points https://

stat.ethz.ch/R-manual/R-devel/library/graphics/html/points.html z opcją type="l".

• wyświetlanie punktów na istniejącym wykresie https://stat.ethz.ch/R-manual/

R-devel/library/graphics/html/points.html

6.3 Wyświetlanie funkcji 3d

6.4 Zapis wykresu do pliku graficznego

W środowisku R można prawym kliknięciem na wykresie skopiować wykres do schowka.

Następnie można wkleić go do programu Paint i zapisać. Można również użyć polece- nia dev.print https://stat.ethz.ch/R-manual/R-devel/library/grDevices/html/

dev2.html

6.5 Skrypty R

Skrypty R uruchamiamy za pomocą polecenia source https://stat.ethz.ch/R-manual/

R-devel/library/base/html/source.html. Możemy zapisać wpisane do tej pory po- lecenia w konsoli za pomocą savehistory https://stat.ethz.ch/R-manual/R-devel/

library/utils/html/savehistory.html. Istnieje również możliwość zapisywania work- space, za pomocą polecenia save.image https://stat.ethz.ch/R-manual/R-devel/

library/base/html/save.html.

6.6 Obliczenia

• Wyświetlenie największej liczby całkowitej typu double print(2^.Machine$double.digits, digits=22), taką, że dodanie 1 uniemożliwi zapisanie już tej liczby.

• wyświelić największą liczbę typu double, .Machine$double.xmax, spróbować po-

mnożyć ją przez 2

(8)

• błędy zaokrągleń np. 0.1+0.1+0.1 == 0.3 zwraca FALSE

• wyświetlenie liczby 0.1 print(0.1, digits=22)

• wyświetlenie maszynowego epsilon .Machine$double.eps / 2, sprawdzić eM + 1 == 1, 2^-60 + eM + 1 == 1

• sprawdzanie równości liczb double, abs((0.3-(0.1+0.1+0.1))/0.3 < 1e-8, moż- na wybrać dokładność jako √

ε M , można też zastosować funkcję all.equal(0.3, 0.1+0.1+0.1, tolerance=1e-8), identical(all.equal(0.2, 0.1), TRUE)

• większa precyzja z pakietem Rmpfr https://www.rdocumentation.org/packages/

Rmpfr

6.7 Pytania

• w jaki sposób usunąć elementy w liście, które występują w drugiej liście w R?

7 Zadania

• Obliczyć iloczyny skalarne wektorów zapisanych w macierzach A i B, można użyć transponowania i mnożenia, lub funkcji crossprod(), lub tcrossprod() wyznaczają- cych A T B i AB T

• Obliczyć kwadrat normy euklidesowej, iloczyn skalarny między dwoma wektorami, iloczyn skalarny między wektorami zapisanymi w macierzy. Użyć do tego mnożenia macierzy, a także w drugim rozwiązaniu funkcji crossprod() lub tcrossprod().

• Dla przykładowych wektorów obliczyć normy Manhattan (taksówkową), normę maksimum, normę euklidesową.

• Obliczyć normy macierzy: normy po współrzędnych: normę Frobeniusa, normę maksimum. A także normy operatorowe O – maksimum po sumach elementów w poszczególnych kolumnach i I – maksimum po sumach elementów w poszczegól- nych wierszach. Są to szczególne przypadki norm indukowanych przez p-normy wektorowe dla p = 1 i p = ∞

kAk p = sup

06=x∈R

m

kAxk p

kxk p (1)

Dla p = 2 otrzymujemy normę spektralną.

• Wyznaczyć metryki indukowane przez p-normy, metrykę Manhattan, metrykę eu- klidesową, metrykę maksimum, na obiekcie dist wywołać unclass, zrzutować na macierz za pomocą as.matrix()

Wskazówki:

(9)

• wczytanie danych dane <- as.matrix(iris[, 1:4]), head(dane), dim(dane), head(dane[, 2]), length(dane[, 2]), head(as.matrix(dane[, 2]))

• polecenie norm(as.matrix(x), type) lub norm(A, type) https://stat.ethz.ch/R- manual/R-devel/library/base/html/norm.html

• funkcja dist() https://stat.ethz.ch/R-manual/R-devel/library/stats/html/

dist.html

X<- rbind(c(1,0),c(0,1),c(1,-1));

dist(X, "manhattan") dist(X, "euclidean") dist(X, "maximum")

• funkcja crossprod https://stat.ethz.ch/R-manual/R-devel/library/base/html/

crossprod.html, tcrossprod https://www.rdocumentation.org/packages/Matrix/

versions/1.2-11/topics/matrix-products

Cytaty

Powiązane dokumenty

C:\&gt;move *.txt c:\DANE przeniesienie wszystkich plików tekstowych do katalogu DANE. C:\&gt;move DANE INFO zmiana nazwy katalogu DANE na

exec - proces dziecko, po odszukaniu ścieżki na dysku, gdzie znajduje się wykonywalny program odpowiadający poleceniu, które nie jest wbudowane w jądro (np. ls), wydaje exec,

Operator „|” umożliwia skierowanie wyjścia (wyniku) jednego polecenia na wejście innego

Utwórz katalog feb20 i przejdź do niego, a następnie używając polecenia touch utwórz w nim następujące pliki:. ab abc a1 a2 a3 all ba ba.1 ba.2 filex filey AbC ABC

znaków spacji, tabulacji oraz znaku nowej linii.. Przejdź do katalogu dolny1 , a następnie używając odpowiednich poleceń ustal czy:. a) posiadasz w swoim systemie plików plik info,

Utwórz skrypt o nazwie policz pobierający dwie wartości wprowadzone jako parametry skryptu, a następnie wypisujący w kolejnych wierszach sumę, różnicę, iloczyn oraz iloraz

mv -przenosi pliki, moŜe to być przeniesienie z katalogu do katalogu (składnia: mv plik katalog lub ścieŜka do tego katalogu ) , lub zawartość pliku do nowego pliku (zmiana

[r]