Podstawy R – Instrukcje warunkowe i pętle
W poprzedniej części kursu podstaw R zapoznaliśmy się z możliwościami przechowywania danych. Teraz przejdźmy do działania w R, czyli pisania w tym języku instrukcji warunkowych oraz pętli.
Instrukcja warunkowa
Ogólna konstrukcja instrukcji warunkowej w R wygląda następująco:
if (warunek)
{
działanie jeżeli warunek spełniony
} else {
działanie jeżeli nie spełniony
}
Najlepiej działanie instrukcji warunkowej przedstawić na przykładzie. Stwórzmy najpierw zmienną x, która będzie zawierała jakąś wartość:
x = 10
Teraz napiszemy prostą instrukcję warunkową wyświetlającą informacje czy zmienna x jest liczbą dodatnią:
if (x › 0 ) print(‘Zmienna x jest dodatnia’)
Wykonując wprowadzoną linię kodu otrzymujemy:
[1] "Zmienna x jest dodatnia"
Dodajmy do instrukcji if else, które w przypadku gdy zmienna x będzie ujemna wyświetli nam inną informacje:
if (x › 0)
{
print('Zmienna x jest dodatnia')
} else {
print('Zmienna x jest ujemna')
}
Wykonajmy wprowadzoną instrukcję:
if (x › 0) ...
[1] "Zmienna x jest dodatnia"
Zmieńmy wartość zmiennej x na ujemną:
x = -10
Wykonajmy jeszcze raz instrukcję:
if (x › 0) ...
[1] "Zmienna x jest ujemna"
W przypadku gdy zmienna x przyjmuje wartość 0 powinna zostać wyświetlona inna informacja niż w przedstawionych wyżej dwóch przykładach. Możemy do naszej instrukcji dodać dodatkowy if else.
if (x ›= 0)
{
if(x == 0)
{
print(’Zmienna x jest równa zero')
} else {
print(’Zmienna x jest dodatnia')
}
} else {
print(’Zmienna x jest ujemna')
}
Zmieńmy x na zero:
x = 0
I wykonajmy instrukcję:
if (x ›= 0) ...
[1] "Zmienna x jest równa zero"
Pętla FOR
Ogólna konstrukcja pętli for w R wygląda następująco:
for(i in zmienna_dla_której_wykonywana_jest_pętla)
{
działanie dla poszczególnych elementów zmiennej
}
Jak to wygląda w praktyce. Stwórzmy sobie wektor x zawierający pięć kolejnych liczb:
x = c(1:5)
Wyświetlamy wektor x:
x
[1] 1 2 3 4 5
Napiszmy pętlę liczącą potęgę każdej wartości w wektorze x i wyświetlająca wyniki tego działania:
for (i in x)
{
y = i*i
print(y)
}
Wykonajmy pętlę:
for (i in x) …
[1] 1
[1] 4
[1] 9
[1] 16
[1] 25
Pętla for jest wykonywana dla każdego z elementów wektora x.
Pętla WHILE
Ogólna konstrukcja pętli while w R wygląda tak:
while (sprawdzenie)
{
działanie
}
Pętla wykonywana jest do momentu gdy sprawdzenie będzie prawdziwe. Pokażemy to na przykładzie zmiennej y równej 0. Napiszmy pętlę while wyświetlającą wynik działania na zmiennej y. Działanie będzie polegało na dodawaniu do niej dwóch w pętli aż jej wartość będzie mniejsza od 16. Kod będzie wyglądał tak:
y = 0
while (y ‹ 16)
{
y = y+2
print(y)
}
Wykonajmy pętlę:
while (y ‹ 16) …
[1] 2
[1] 4
[1] 6
[1] 8
[1] 10
[1] 12
[1] 14
[1] 16
Break i next
Pętle for i while możemy również przerwać używając break i next. Break służy do zatrzymania pętli, natomiast next do przejścia do kolejnego elementu. Użyjmy w poprzedniej pętli while zatrzymania break, gdy y będzie równe 8:
y = 0
while (y ‹ 16)
{
y <- y+2
if(y==8) break
print(y)
}
Wykonajmy zmodyfikowaną pętlę:
while (y ‹ 16) …
[1] 2
[1] 4
[1] 6
Pętla zatrzymała się, gdy y było równe 8. Teraz pomińmy ten wynik w pętli while:
y = 0
while (y ‹ 16)
{
y = y+2
if(y==8) next
print(y)
}
Wykonajmy zmodyfikowaną pętlę:
while (y ‹ 16) …
[1] 2
[1] 4
[1] 6
[1] 10
[1] 12
[1] 14
[1] 16
Pętle i instrukcje warunkowe mogą się wzajemnie przeplatać tworząc złożone struktury kodu.
Pętla for znajduje zastosowanie w automatycznym przetwarzaniu dużych zbiorów np. rastrów. W pierwszej kolejności kodujemy działanie na jednym pliku tj. wczytanie pliku, przetworzenie go i zapis wyniku. To działanie następnie zamykamy w pętli wykonującej je na naszym zbiorze plików.
W kolejnym kursie Podstaw R zaprezentujemy, jak kodować własne funkcje.