Uwagi ogólne R nie jest wyjątkiem w językach programowania i opiera się na zmiennych i funkcjach. Zmienne nie muszą być deklarowane, można ich zatem od razu używać.
Uwagi ogólne Klasycznym operatorem przypisania w R jest <-, natomiast obecnie coraz częściej wykorzystuje się znak równości(=).
Uwagi ogólne Jeśli chcemy żeby wynik przypisania został wyświetlony na ekranie należy przypisanie zamknąć w nawiasy().
Uwagi ogólne Jeśli chcemy aby kilka wyrażeń było zapisanych w jednej linii, to musimy oddzielić je średnikiem(;).
Uwagi ogólne Komentarz poprzedzamy znakiem hash(#), wszystko do końca linii jest już komentarzem.
Uwagi ogólne Dla czytelności kodu można używać spacji gdziekolwiek się chce, są one pomijane.
Uwagi ogólne Rrozróżniawielkieimałelitery,coznaczy,żexorazXtodwie inne zmienne.
Uwagi ogólne W celu określania kolejności działań używamy wyłącznie nawiasów okrągłych().
Uwagi ogólne Możemy używać następujących operatorów matematycznych: +,,,/orazˆ(potęgowanie),%%(resztazdzielenia tzw. modulo)%/%(część całkowita z dzielenia).
Uwagi ogólne Jeśli chcemy aby wykonało się kilka wyrażeń, to musimy je zgrupować za pomocą {}.
Uwagi ogólne W nazwach można używać wszystkich znaków A-Za-z0-9 oraz. i.dodatkowonazwamusizaczynaćsięod. lublitery,jeśli jednakzaczynasięod.,todrugiznakniemożebyćcyfrą.
Uwagi ogólne Za pomocą polecenia ls() możemy zobaczyć wszystkie aktualnie istniejące obiekty. Usunąć jakiś obiekt możemy za pomocą polecenia rm(nazwa).
Uwagi ogólne Kod źródłowy funkcji możemy zobaczyć wpisując jej nazwę. W przypadku funkcji przeciążonych należy wyspecyfikować również klasę obiektu. Wszystkie przeciążenia funkcji możemy wyświetlić za pomocą funkcji methods, funkcje ukryte(czyli takie, które nie są przeznaczone do osobnego wywoływania) oznaczone są za pomocą *. Kod takich funkcji wyświetlamy za pomocą funkcji getanywhere.
Instrukcja warunkowa Najprostsza postać tej instrukcji to: if(warunek) wyrażenie Instrukcja ta sprawdza czy warunek jest prawdziwy, jeśli tak to wykonuje wyrażenie, w przeciwnym razie nic nie robi. Jeśli chcemy aby w przypadku nieprawdziwości warunku również coś się działo musimy użyć następującej postaci instrukcji warunkowej: if(warunek) wyrażenie1 else wyrażenie2 Istnieje również bardzo użyteczna(i szybsza od pętli) wielowymiarowa wersja instrukcji warunkowej postaci: ifelse(warunek, a, b) W tym przypadku wszystkie elementy instrukcji są wektorami. Sprawdzane są kolejne warunki w wektorze warunek, jeśli jest prawdziwy to odpowiednia składowa ma wartość a[i], w przeciwnym razie ma wartość b[i].
Operatory logiczne oraz operatory porównania Operator Działanie & Logiczne AND(i) Logiczne OR(lub)! Logiczne NOT(nieprawda, że) xor(x, y) Logiczne XOR(różnica symetryczna) == równy!= różny < mniejszy > większy <= mniejszy bądź równy >= większy bądź równy istrue(x) Czy prawda?
Funkcje any oraz all Jeśli chcemy działać na całych wektorach, a nie tylko na skalarach wygodnie jest używać funkcji any oraz all. Pierwsza z nich daje wartość TRUE jeśli warunek jest spełniony chociaż dla jednej składowej wektora, a druga gdy warunek jest spełniony dla wszystkich składowych.
Zagnieżdżanie instrukcji if Czasami zamiast wielokrotnego zagnieżdżania instrukcji if warto skorzystać z funkcji switch(zmienna, wartosc1 = akcja1, wartosc2 = akcja2,...) W takim przypadku w zależności od wartości zmiennej(powinna być typu znakowego lub wyliczeniowego) wykonywane są różne akcje.
Pętla W R mamy wszystkie trzy klasyczne postaci pętli: for(licznik in start:koniec) wyrażenie while(warunek) wyrażenie repeat wyrażenie
Pętla Pętlaforjestużywanawtedygdyzgórywiemyilekrokówbędzie konieczne do zakończenia zadania. Określamy to poprzez zmienną licznik, dla której zadajemy zakres zmian. Pętla while polega na tym, że wyrażenie jest wykonywane tak długo dopóki warunek jest prawdziwy, w momencie gdy warunek staje się fałszywy pętla się kończy. Ostatnim rodzajem pętli jest pętla typu repeat. W tym przypadku wyrażenie jest tak długo wykonywane aż gdzieś wewnątrz nakażemy zakończenie pętli za pomocą polecenia break. Jest to jedyna możliwość zakończenia tego typu pętli. Można tej funkcji również używać do wcześniejszego opuszczenia innych pętli. Czasami przydaje się również polecenie next, które przerywa bieżącą iterację i przechodzi do następnej.
Funkcje Własne funkcje tworzymy następująco nazwa funkcji = function(argumenty) ciało funkcji Tak skonstruowana funkcja może być wywołana za pomocą swojej nazwy, jeśli funkcja nie posiada argumentów wywołujemy ją za pomocą nazwa funkcji(). Jeśli chcemy aby pewne argumenty miały wartości domyślne, to możemy wykorzystać konstrukcję: nazwa funkcji = function(arg1 = wartość) ciało funkcji W przypadku takiej konstrukcji arg1 ma wartość domyślną i jeśli wywołamy funkcję nazwa funkcji(), to zostanie ona wywołana właśnie z takim domyślnym argumentem.
Funkcje Specjalnym argumentem są, trzy kropki(...). Oznaczają one nieokreśloną liczbę argumentów. Najczęściej jest używany do przekazywania parametrów funkcjom wywoływanym wewnątrz definiowanej funkcji(np. parametrów graficznych). Funkcje możemy tworzyć bezpośrednio w oknie R, jak również za pomocą specjalnego edytora skryptów File/New Script. Skrypty zapisujemy z rozszerzeniem R. W ostatniej linii ciała funkcji zapisujemy, to co funkcja ma zwrócić, możemy do tego użyć instrukcji grupującej(czyli funkcji c). Wszystkie operacje wewnątrz funkcji są lokalne, tzn. zmienne, które tam powstają oraz zmiany wartości zmiennych mają miejsce jedynie wewnątrz funkcji i po jej zakończeniu przywracane są takie wartości jakie zmienne miały przed jej wywołaniem, a zmienne lokalne są kasowane. Jeśli chcemy, żeby tak się nie działo, czyli aby zmiany były przenoszone na zewnątrz funkcji musimy użyć operatora superprzypisania <<-.
Funkcje Jeśli chcemy, aby nasza funkcja zwracała jednak kilka wartości, a nie wektor, to musimy zgrupować wyniki w listę. Jeśli planujemy zakończyć wykonywanie funkcji wcześniej należy użyć polecenia return. Jeśli natomiast chcemy żeby funkcja nie wyświetlała wyniku(jest on ukryty i może być przypisany do zmiennej) należy użyć polecenia invisible. Przy pisaniu bardziej zaawansowanych funkcji przydatne mogą być jeszcze funkcje missing oraz match.arg. Pierwsza z nich sprawdza, czy został przekazany argument do funkcji. Natomiast druga sprawdza, czy wśród podanych argumentów są właściwe i je dopasowuje(umożliwia to np. korzystanie w funkcji z nazw skróconych parametrów).
Podstawowe funkcje matematyczne oraz pomocnicze abs(x) Wartość bezwzględna atan2(y,x) Kąt (w radianach) pomiędzy osią OX a wektorem o początkuwpunkcie(0,0)ikońcuwpunkcie (x,y). Używana do zamiany współrzędnych z układu kartezjańskiego na biegunowy. ceiling(x) Sufit, czyli najmniejsza liczba całkowita nie mniejsza od x. choose(n, k) Liczba kombinacji k z n, listę tych kombinacji otrzymamy za pomocą funkcji combn(n, k). diff(x) Różnice kolejnych par składowych wektora x exp(x) Funkcja wykładnicza floor(x) Podłoga, czyli największa liczba całkowita nie większa od x. log(x) Logarytm naturalny, istnieją też funkcje log2(x) oraz log10(x), które są odpowiednio logarytmem o podstawie 2 i 10. Ogólna funkcja licząca logarytm o podstawie b, ma postać log(x, b)
Podstawowe funkcje matematyczne oraz pomocnicze min(x), max(x) Minimum, maksimum. Funkcje which.min oraz which.max zwracają numer odpowiedniej obserwacji(pierwszej). Funkcje pmin oraz pmax wywołane dla dwóch wektorów zwracają odpowiednio minimum (maksimum) dla każdej pary. prod(x) Iloczyn elementów, funkcja cumprod(x) daje iloczyn skumulowany round(x) Zaokrąglanie, round(x, n)- zaokrąglanie do nmiejsc. Rzaokrągla0.5do0,odwrotnie niż np. Matlab. sin(x), cos(x), tan(x) Funkcje trygonometryczne asin(x), acos(x), atan(x) Funkcje cyklometryczne(funkcje odwrotne do funkcji trygonometrycznych) sinh(x), cosh(x), tanh(x) Funkcje hiperboliczne asinh(x), acosh(x), atanh(x) Funkcje hiperboliczne odwrotne
Podstawowe funkcje matematyczne oraz pomocnicze sign(x) sqrt(x) sum(x) Znak liczby Pierwiastek kwadratowy Suma elementów, funkcja cumsum(x) daje sumę skumulowaną length(x) Liczba elementów, funkcje nrow oraz ncol podają odpowiednio liczbę wierszy i kolumn print(x) Wyświetla dane rev(x) Odwraca porządek danych sort(x) Sortuje dane(wektor) summary(x) Statystyki danych
Generowanie dowolnych danych Funkcja sample, domyślnie generuje dane bez powtórzeń.
Generowanie dowolnych danych W R znajdują się pewne predefiniowane wektory, z których możemy losować elementy za pomocą funkcji sample. Są to: letters(małe litery), LETTERS(wielkie litery), month.abb(skróty trzyliterowe angielskich nazw miesięcy), month.name(angielskie nazwy miesięcy).
Generowanie dowolnych danych Funkcja gl do generowania zmiennych czynnikowych. gl(n=l.poziomów,k=l.powtórzeń,length=długość,labels= poziomy)
Funkcje dotyczące rozkładów prawdopodobieństwa Rozkład Dystrybuanta Gęstość Kwantyl Generator dwumianowy pbinom dbinom qbinom rbinom Poissona ppois dpois qpois rpois ujemny dwumianowy pnbinom dnbinom qnbinom rnbinom geometryczny pgeom dgeom qgeom rgeom hipergeometryczny phyper dhyper qhyper rhyper wielomianowy dmultinom rmultinom jednostajny punif dunif qunif runif beta pbeta dbeta qbeta rbeta wykładniczy pexp dexp qexp rexp gamma pgamma dgamma qgamma rgamma normalny pnorm dnorm qnorm rnorm logarytmiczno-normalny plnorm dlnorm qlnorm rlnorm Weibulla pweibull dweibull qweibull rweibull chi-kwadrat pchisq dchisq qchisq rchisq t pt dt qt rt Cauchy ego pcauchy dcauchy qcauchy rcauchy F pf df qf rf