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 )