Programowanie i analiza danych w R 2010/2011 Instrukcja

Transkrypt

Programowanie i analiza danych w R 2010/2011 Instrukcja
Programowanie i analiza danych
w R 2010/2011
Sterowanie kodem w R
Jarosล‚aw Wierzbicki
๐‘–๐‘“๐‘’๐‘™๐‘ ๐‘’(๐‘ฅ >= 0, "๐‘๐‘™๐‘ข๐‘ ", "๐‘š๐‘–๐‘›๐‘ข๐‘ ")
Funkcja switch
Skล‚adnia:
๐‘ ๐‘ค๐‘–๐‘ก๐‘๐‘•(๐‘˜, ๐‘ค๐‘Ž๐‘Ÿ1 = ๐‘–๐‘›๐‘ ๐‘ก๐‘Ÿ1, ๐‘ค๐‘Ž๐‘Ÿ2 = ๐‘–๐‘›๐‘ ๐‘ก๐‘Ÿ2, โ€ฆ )
Instrukcja warunkowa ifโ€ฆ elseโ€ฆ
Skล‚adnia wyglฤ…da nastฤ™pujฤ…co:
๐‘–๐‘“ (๐‘ค๐‘Ž๐‘Ÿ_๐‘™๐‘œ๐‘”) ๐‘–๐‘›๐‘ ๐‘ก๐‘Ÿ๐‘ข๐‘˜๐‘๐‘—๐‘Ž_๐‘Ž ๐‘’๐‘™๐‘ ๐‘’ ๐‘–๐‘›๐‘ ๐‘ก๐‘Ÿ๐‘ข๐‘˜๐‘๐‘—๐‘Ž_๐‘
Fragment kodu zaczynajฤ…cy siฤ™ od else jest
opcjonalny. instrukcja_a jak i instrukcja_b mogฤ… byฤ‡
pojedynczymi instrukcjami jak i blokami instrukcji. Jeล›li
warunek logiczny war_log jest prawdziwy to zostanie
wykonana instrukcja_a jeล›li war_log jest faล‚szywy to
zostanie wykonana instrukcja_b.
Przykล‚ad:
๐‘ฅ < โˆ’2
๐‘–๐‘“(๐‘ฅ >= 0){
๐‘ฆ = ๐‘ ๐‘ž๐‘Ÿ๐‘ก(๐‘ฅ)
๐‘๐‘Ž๐‘ก("๐‘ƒ๐‘–๐‘’๐‘Ÿ๐‘ค๐‘–๐‘Ž๐‘ ๐‘ก๐‘’๐‘˜ ๐‘˜๐‘ค๐‘Ž๐‘‘๐‘Ÿ๐‘Ž๐‘ก๐‘œ๐‘ค๐‘ฆ: ", ๐‘ฆ)
} ๐‘’๐‘™๐‘ ๐‘’ {
๐‘๐‘Ž๐‘ก("Blad! Liczba ujemna")
}
Funkcja ifelse
ifelse jest uogólnieniem wyลผej wymienionej instrukcji
warunkowej. Skล‚adnia przedstawia siฤ™ nastฤ™pujฤ…co:
๐‘–๐‘“๐‘’๐‘™๐‘ ๐‘’(๐‘ค๐‘Ž๐‘Ÿ_๐‘™๐‘œ๐‘”, ๐‘–๐‘›๐‘ ๐‘ก๐‘Ÿ๐‘ข๐‘˜๐‘๐‘—๐‘Ž_๐‘Ž, ๐‘–๐‘›๐‘ ๐‘ก๐‘Ÿ๐‘ข๐‘˜๐‘๐‘—๐‘Ž_๐‘)
gdzie war_log jest wektorem wartoล›ci logicznych.
Wynikiem tej funkcji jest wartoล›ฤ‡ lub wektor, który na
odpowiednich wspóล‚rzฤ™dnych przyjmuje wartoล›ci
opisane przez instrukcja_a (instrukcja_b)
gdy
odpowiedni war_log jest prawdziwy (faล‚szywy).
Przykล‚ad:
๐‘ฅ < โˆ’๐‘(โˆ’5,3, โˆ’2,4)
๐‘–๐‘“๐‘’๐‘™๐‘ ๐‘’(๐‘ฅ >= 0, ๐‘ฅ^0.5, ๐‘๐‘Ž๐‘)
Pierwszy argument funkcji switch jest typu
znakowego lub typu factor. W zaleลผnoล›ci od wartoล›ci k
zostanie wykonana odpowiednia instrukcja. Jeล›li wartoล›ฤ‡
k nie odpowiada ลผadnej z wymienionych wartoล›ci to
zostanie wykonana nienazwana. Jeลผeli odpowiednia
instrukcja jest โ€žpustaโ€ to zostanie wykonana instrukcja
dla kolejnej wartoล›ci.
Przykล‚ad:
๐‘˜ < โˆ’"1" # ๐‘˜ < โˆ’"2"
๐‘ ๐‘ค๐‘–๐‘ก๐‘๐‘•(๐‘˜, "1" = ๐‘๐‘Ž๐‘ก("๐‘—๐‘’๐‘‘๐‘’๐‘›\๐‘›"),
"2"=, "3"=cat(๐‘‘๐‘ค๐‘Ž ๐‘™๐‘ข๐‘ ๐‘ก๐‘Ÿ๐‘ง๐‘ฆ\๐‘›"),
๐‘๐‘Ž๐‘ก("? ? ?\๐‘›"))
Pฤ™tla for
Skล‚adnia:
๐‘“๐‘œ๐‘Ÿ(๐‘– ๐‘–๐‘› ๐‘ค๐‘’๐‘˜๐‘ก) ๐‘–๐‘›๐‘ ๐‘ก๐‘Ÿ๐‘ข๐‘˜๐‘๐‘—๐‘Ž
gdzie instrukcja moลผe byฤ‡ pojedynczฤ… instrukcjฤ… lub
blokiem instrukcji. Elementy wektora wekt mogฤ… byฤ‡
dowolnego typu . Pฤ™tla wykona siฤ™ tyle razy ile jest
wspóล‚rzฤ™dnych wektora wekt. Za kaลผdym razem zmienna
i przyjmuje wartoล›ci kolejnych elementów wektora wekt.
Tradycyjnie sฤ… to nastฤ™pujฤ…ce po sobie liczby naturalne
ale tak nie musi byฤ‡.
Przykล‚ad:
๐‘ค < โˆ’๐‘("๐‘—๐‘’๐‘‘๐‘’๐‘›", "๐‘‘๐‘ค๐‘Ž", "๐‘ก๐‘Ÿ๐‘ง๐‘ฆ")
๐‘“๐‘œ๐‘Ÿ(๐‘– ๐‘–๐‘› ๐‘ค){
๐‘๐‘Ž๐‘ก("๐‘ค๐‘Ž๐‘Ÿ๐‘ก๐‘œ๐‘ ๐‘ ๐‘ง๐‘š๐‘–๐‘’๐‘›๐‘›๐‘’๐‘— ๐‘–: ", ๐‘–, "\๐‘›")}
Pฤ™tla while
Pฤ™tla while jest uลผywana w przypadkach, w których
nie znamy iloล›ci powtórzeล„ danej instrukcji. Skล‚adnia
wyglฤ…da nastฤ™pujฤ…co:
๐‘ค๐‘•๐‘–๐‘™๐‘’(๐‘ค๐‘Ž๐‘Ÿ_๐‘™๐‘œ๐‘”) ๐‘–๐‘›๐‘ ๐‘ก๐‘Ÿ๐‘ข๐‘˜๐‘๐‘—๐‘Ž
Jeลผeli mamy wiฤ™cej czynnoล›ci do wykonania to
zamiast jednej instrukcji wstawiamy blok instrukcji. Pฤ™tla
bฤ™dzie siฤ™ wykonywaล‚a dopóki warunek logiczny
war_log jest prawdziwy.
Pฤ™tla repeat
Skล‚adnia:
๐‘Ÿ๐‘’๐‘๐‘’๐‘Ž๐‘ก ๐‘–๐‘›๐‘ ๐‘ก๐‘Ÿ๐‘ข๐‘˜๐‘๐‘—๐‘Ž
Pฤ™tla repeat bฤ™dzie siฤ™ wykonywaฤ‡ dopóki nie nastฤ…pi
komenda
break,
która
powoduje
zatrzymanie
wykonywania pฤ™tli. Instrukcja ta dziaล‚a równieลผ w
przypadku pฤ™tli for i while. Instrukcja next powoduje
zaniechanie wykonywanie danej iteracji.
Funkcje
Schemat deklaracji funkcji:
๐‘“๐‘ข๐‘›๐‘๐‘ก๐‘–๐‘œ๐‘›(๐‘Ž๐‘Ÿ๐‘”) ๐‘–๐‘›๐‘ ๐‘ก๐‘Ÿ๐‘ข๐‘˜๐‘๐‘—๐‘Ž
gdzie instrukcja to pojedyncza instrukcja lub ich blok.
Funkcje sฤ… traktowane jak obiekty wiฤ™c moลผliwe jest ich
przypisanie do zmiennej. arg to sฤ… argumenty
(oddzielone przecinkami) przekazywane do funkcji (lista
argumentów moลผe byฤ‡ pusta). Moลผna równieลผ okreล›liฤ‡
domyล›lne wartoล›ci dla kolejnych argumentów wtedy
przy wywoล‚aniu funkcji gdy dany argument nie jest
podany wykorzystana bฤ™dzie jego domyล›lna wartoล›ฤ‡.
Wynik dziaล‚ania funkcji to wartoล›ฤ‡, która jest
wyznaczana w ostatniej linii ciaล‚a funkcji. Jeล›li chcemy
mieฤ‡ innฤ… wartoล›ฤ‡ wynikowฤ… uลผywamy instrukcji
return(w). Powoduje ona przerwanie dziaล‚ania funkcji i
przekazanie jako wynik argument w.
Przykล‚ad:
๐‘๐‘–๐‘’๐‘Ÿ๐‘ค๐‘–๐‘Ž๐‘ ๐‘ก๐‘’๐‘˜ = ๐‘“๐‘ข๐‘›๐‘๐‘ก๐‘–๐‘œ๐‘›(๐‘ฅ, ๐‘Ž = 2){๐‘ < โˆ’๐‘ฅ^(1/๐‘Ž)}
๐‘๐‘Ÿ๐‘–๐‘›๐‘ก(๐‘๐‘–๐‘’๐‘Ÿ๐‘ค๐‘–๐‘Ž๐‘ ๐‘ก๐‘’๐‘˜ 9 )