Projekt R

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.