przewodnikPoPakiecieR5

przewodnikPoPakiecieR5



I

42


Łagodne wprowadzenie do R


Przyśpieszamyr


43


Can one be a gootl data analyst without being a half-good programmer? The ahort answer to that te, 'No.' The long answer to that te, ’No.’

Frank Harrcll fortune(52)


Autor spodziewa się, że czytelnik nie wierzy na słowo, tylko sprawdzi jakim komunikatem zakończy się wpisanie tych Doleceń.


1.6 Przyśpieszamy

Po lekturze tego rozdziału czytelnik będzie już całkowicie gotów do korzystania z R. % W kolejnych podrozdziałach przedstawimy składnię języka R, funkcje do operacji na J danych, wprowadzenie do grafiki oraz podstawowe statystyki opisowe. Zakładamy, * że czytelnik opanował materiał przedstawiony w poprzednich podrozdziałach.

1.6.1 Instrukcje warunkowe i pętle

Wiemy już jak pisać proste programy, w których instrukcje wykonywane są jedna po drugiej. Korzystając z ir wykonywania programu


drugiej. Korzystając z instrukcji warunkowych i pętli możemy sterować przepływem -tM


1.6.1.1 Instrukcja warunkowa if ... else ...

W języku R, tak jak w większości języków programowania, mamy możliwość korzy-stania z instrukcji if else. Umożliwia ona warunkowe wykonanie fragmentu kodu w zależności od prawdziwości pewnego warunku logicznego. Składnia instrukcji if else jest następująca:


if


(war)

instrl


» luft if (war)

instrl else instr2

Fragment instrukcji warunkowej począwszy od słowa else jest nieobowiązkowy. Jeżeli wartość warunku logicznego war jest prawdziwa (logiczna równa TRUE lub liczbowa różna od 0), to wykonana zostanie instrl, jeżeli nie, to wykonana będzie instr2 (o ile podano wariant z else). Zarówno instrl jak i instr2 mogą być zastąpione blokiem instrukcji (instrukcjami otoczonymi nawiasami {>).

Zobaczmy, jak to wygląda na poniższym przykładzie.

>    liczba = 1313

>    tt zapis ’liczba */,’/. 3 — 0’ oznacza sprawdzenie, czy reszta z dzielenia

prez 2 ma wartość 0, jeżeli tak jest, to to wyrażenie przyjmuje    J

wartość TRUE, w przeciwnym razie wartość FALSE

>    if (liczba V. 2 *» 0) {

+ cat("ta liczba jest parzysta\n")

+ > else {

+ catCta liczba jest nieparzystaW)

+ }

ta liczba jest nieparzysta

Należy uważać, by słowo kluczowe else nie rozpoczynało nowej linii. Błędem

zakończy się następujący ciąg poleceń:


■; p wersja nie będzie działała

if (i‘-0)

‘K. cat(“to nie może być prawda")

pi

a cat("C0 się wyświetli?")


Dlaczego? Jak pamiętamy R to język interpretowany. Po zakończeniu drugiej linii tego przykładu interpreter nie spodziewu się kolejnych instrukcji, dlatego wykona (w jego mniemaniu już kompletną) instrukcję warunkową. Przechodząc do trzeciej linijki o instrukcji if już nie pamięta, dlatego zostanie zgłoszony błąd składni. Poprawne użycie instrukcji if z wariantem else jest następujące:

># ta wersja będzie działała 'if (1-0) {

£t’    cat("to nie może być prawda")

> else {

f    cat("co się wyświetli?")

gip. ' >

:S podobnie jak ta lf (1—0)

cat(“to nie może być prawda") else cat("co się wyświetli?")


1.6.1.2 Funkcja ifelse(base)

Powyżej omówiona instrukcja warunkowa bierze pod uwagę wartość tylko jednego warunku logicznego. Funkcja ifelseO pozwala na wykonanie ciągu działań w zależności od wektora warunków logicznych. Składnia tej funkcji jest następująca:

ifelse(war, Instrl, instr2)

Warunek war może być jedną wartością logiczną lub wektorem wartości logicznych. W wyniku wykonania tej funkcji zwrócona zostanie wartość lub wektor. Wynik będzie miał wartości opisane przez Instrl w pozycjach odpowiadających wartości TRUE wektora war oraz wartości opisane przez instr2 w pozycjach odpowiadających wartości FALSE wektora war. Prześledźmy wyniki poniższych przykładów.

>    # pierwszy argument jest wektorem

>    ifelse(1:8 < 5, "mniej", "wiecej")

(1] “mniej" "mniej" "mniej" "mniej" "wiecej" "wiecej" "wiecej" "wiecej"

>,# wszystkie argumentywektorami

>    ifelse(sin(l:5)>0, (1:6)*2, (1:5)“3)

UJ 1    4    9    64 125

>    » wszystkie argumenty to pojedyncze wartości

>    ifel3e(l—2, " cos jest nie tak", "uff")

UJ “uff"


Ale uwaga! Jeżeli te instrukcje znalazłyby się w ciele funkcji, to błąd nie zastałby zgłoszony, wszystl by działało!


'i


Interpreter to program interpretujący instrukcje zapisań* w języku programowania na rozkazy rozumiano przez procesor. Interpreter języka' jest integralną częścią platformy


I


lO

I


I


I


I


I


I


I


i


i


$ i


Wyszukiwarka

Podobne podstrony:
przewodnikPoPakiecieR3 38 Łagodne wprowadzenie do R 38 Łagodne wprowadzenie do R generowana jest se
przewodnikPoPakiecieR3 58 Łagodne wprowadzenie do R Wariacje z funkcją ablinef) •tó Rysunek 1.6: Pr
przewodnikPoPakiecieR0 12 Łagodne wprowadzenie do R • File Source R codę... Tym poleceniem możemy w
przewodnikPoPakiecieR1 14 Łagodne wprowadzenie do R —    BufFered output Ta opcja ok
przewodnikPoPakiecieR2 16 Łagodne wprowadzenie do R -    R functions (text) Pomoc do
przewodnikPoPakiecieR3 18 Łagodne wprowadzenie do R 18 Łagodne wprowadzenie do R R will always be a
przewodnikPoPakiecieR5 22 Łagodne wprowadzenie do R Thbela 1.3: Lista funkcji arytmetycznych z paki
przewodnikPoPakiecieR7 26 Łagodne wprowadzenie do R >    # d teraz tworzymy inną,
przewodnikPoPakiecieR1 34 Łagodne wprowadzenie do R 1.5.6.4 Indeksy Do elementów wektorów, list, ma
przewodnikPoPakiecieR7 46 Łagodne wprowadzenie do R >    # to pętla wykona się dl
przewodnikPoPakiecieR9 50 Łagodne wprowadzenie do R Wt*p
przewodnikPoPakiecieR1 54 Łagodne wprowadzenie do R 1.6.2.5 Własno operatory Kolejnym rozszerzeniem
przewodnikPoPakiecieR2 56 Łagodne wprowadzenie do R y j y Prawdę mówiąc w R nie ma rzeczy niemożliw
przewodnikPoPakiecieR5 62 Łagodne wprowadzenie do R W pliku "nazwa.pliku.z.danymi" mogą b
przewodnikPoPakiecieR5 2 Łagodne wprowadzenie do R1.2 Słów kilka o projekcie R R is tho lingua fran

więcej podobnych podstron