Przejdź do głównej treści
eLearner.app
Moduł 2 · Lekcja 2 z 24/10 w kursie~12 min
Lekcje modułu (2/2)

Warunki i Pętle

Aby wdrażać złożone algorytmy i procedury w R, musisz być w stanie kontrolować, które instrukcje mają być wykonywane i ile razy mają być powtarzane.

Instrukcje Warunkowe

W R podstawowa struktura warunkowa opiera się na if i else. Składnia jest całkowicie zbliżona do języków takich jak JavaScript czy C:

Code
score <- 85

if (score >= 60) {
  print("Superato!")
} else {
  print("Non superato.")
}

Nawiasy klamrowe {} określają bloki kodu do wykonania w zależności od wyniku wyrażenia logicznego w nawiasach okrągłych.

Pętla for

Pętla for w R jest używana do iteracji po elementach należących do sekwencji (takiej jak wektor lub lista).

Code
# Wypisuje liczby od 1 do 3
for (i in 1:3) {
  print(i)
}

W R zapis 1:3 to skrót do utworzenia wektora c(1, 2, 3).

Możemy również iterować bezpośrednio po elementach istniejącego wektora:

Code
fruits <- c("apple", "banana", "cherry")

for (fruit in fruits) {
  print(fruit)
}

Funkcja ifelse

W R funkcja ifelse() to zwektoryzowana wersja konstrukcji if-else. Pozwala zastosować warunek do całego wektora w jednej operacji, zwracając wektor wyników.

Code
scores <- c(55, 80, 45, 90)
# Jeśli score >= 60 przypisz "Pass", w przeciwnym razie "Fail"
results <- ifelse(scores >= 60, "Pass", "Fail")
print(results) # "Fail" "Pass" "Fail" "Pass"

Pętla while

Pętla while służy do powtarzania bloku kodu tak długo, jak określony warunek pozostaje prawdziwy (TRUE). Kluczowe jest upewnienie się, że warunek w pewnym momencie stanie się fałszywy, aby uniknąć nieskończonych pętli.

Code
counter <- 1
while (counter <= 3) {
  print(counter)
  counter <- counter + 1
}

Spróbuj sam

Ćwiczenie#r.m2.l2.e1
Próby: 0Ładowanie...

Napisz strukturę warunkową if-else, która sprawdza, czy zmienna score jest większa lub równa 60. Jeśli tak, ustaw status na 'Pass', w przeciwnym razie ustaw go na 'Fail'.

Ładowanie edytora...
Pokaż wskazówkę

Sprawdź score >= 60 i przypisz status <- 'Pass' lub status <- 'Fail'

Rozwiązanie dostępne po 3 próbach

Ćwiczenie#r.m2.l2.e2
Próby: 0Ładowanie...

Napisz pętlę for, która iteruje po sekwencji 1:5 i wypisuje każdą wartość za pomocą funkcji print().

Ładowanie edytora...
Pokaż wskazówkę

Użyj składni: for (i in 1:5) { print(i) }

Rozwiązanie dostępne po 3 próbach

Ćwiczenie#r.m2.l2.e3
Próby: 0Ładowanie...

Dla danego wektora v, napisz pętlę for, która iteruje po każdym elemencie i wypisuje jego podwojoną wartość (val * 2) za pomocą print().

Ładowanie edytora...
Pokaż wskazówkę

Przejdź przez elementy v: for (val in v) { print(val * 2) }

Rozwiązanie dostępne po 3 próbach

Ćwiczenie#r.m2.l2.e4
Próby: 0Ładowanie...

Dla danego wektora scores, użyj funkcji ifelse(), aby sprawdzić, które elementy są większe lub równe 60. Zapisz wynik (który będzie zawierał 'Pass' lub 'Fail' dla każdego elementu) w zmiennej results.

Ładowanie edytora...
Pokaż wskazówkę

Użyj funkcji: results <- ifelse(scores >= 60, 'Pass', 'Fail')

Rozwiązanie dostępne po 3 próbach

Ćwiczenie#r.m2.l2.e5
Próby: 0Ładowanie...

Użyj pętli while, aby podwajać wartość x tak długo, aż przekroczy 50. Zwiększaj również zmienną counter przy każdej iteracji.

Ładowanie edytora...
Pokaż wskazówkę

Użyj pętli while (x <= 50) i aktualizuj zarówno x, jak i counter wewnątrz nawiasów klamrowych.

Rozwiązanie dostępne po 3 próbach