Menu
CoddyTech

Logika wektoryzowana, część 2

Część sekcji Podstawy ścieżki R w Coddy. Lekcja 21 z 78.

Podobnie jak AND i OR mają wersje działające na wektorach, operator NOT również działa element po elemencie na wektorach. Gdy zastosujesz ! do wektora wartości logicznych, odwróci on każdą z nich z osobna.

passed <- c(TRUE, FALSE, TRUE, FALSE)
!passed  # FALSE TRUE FALSE TRUE

Każda wartość TRUE zmienia się w FALSE, a każda wartość FALSE zmienia się w TRUE. Jest to szczególnie przydatne, gdy chcesz znaleźć elementy, które nie spełniają określonego warunku:

temperatures <- c(18, 25, 30, 15, 22)

# Znajdź temperatury, które NIE przekraczają 20
!(temperatures > 20)  # TRUE FALSE FALSE TRUE FALSE

Możesz połączyć wektoryzowane NOT z & i |, aby tworzyć złożone filtry:

ages <- c(16, 25, 17, 30, 14)
has_permission <- c(TRUE, TRUE, FALSE, TRUE, TRUE)

# Może uczestniczyć, jeśli: wiek >= 18 LUB (poniżej 18 lat I ma zgodę)
can_participate <- ages >= 18 | (ages < 18 & has_permission)
# TRUE TRUE FALSE TRUE TRUE

Pamiętaj: używaj pojedynczych operatorów &, | i ! podczas pracy z wektorami oraz podwójnych operatorów && i || przy porównywaniu pojedynczych wartości.

challenge icon

Wyzwanie

Łatwy

Użyj zwektoryzowanego operatora NOT (!) wraz z operatorami & i |, aby tworzyć złożone warunki logiczne działające element po elemencie.

Otrzymujesz następujące wektory:

scores <- c(45, 72, 88, 55, 91, 38, 67)
attended <- c(TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE)
submitted_homework <- c(TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE)

Użyj zwektoryzowanych operatorów logicznych, w tym operatora NOT, aby utworzyć następujące wektory logiczne:

  1. Utwórz wektor o nazwie failed, który przechowuje wartość TRUE dla każdego wyniku, który NIE jest większy od lub równy 60
  2. Utwórz wektor o nazwie absent, który przechowuje wartości przeciwne do attended (odwróć każdą wartość)
  3. Utwórz wektor o nazwie at_risk, który przechowuje wartość TRUE dla każdego ucznia, który NIE uczęszczał na zajęcia LUB NIE oddał pracy domowej
  4. Utwórz wektor o nazwie passing_but_absent, który przechowuje wartość TRUE dla każdego ucznia, którego wynik jest większy od lub równy 60 I który NIE uczęszczał na zajęcia
  5. Utwórz wektor o nazwie needs_support, który przechowuje wartość TRUE dla każdego ucznia, w przypadku którego: (wynik jest mniejszy niż 50) LUB (uczeń NIE uczęszczał na zajęcia I NIE oddał pracy domowej)

Użyj funkcji print(), aby wyświetlić failed, absent, at_risk, passing_but_absent i needs_support dokładnie w tej kolejności.

Spróbuj swoich sił

# Podane wektory
scores <- c(45, 72, 88, 55, 91, 38, 67)
attended <- c(TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE)
submitted_homework <- c(TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE)

# TODO: Napisz swój kod poniżej
# 1. Utwórz 'failed' — TRUE dla wyników scores, które NIE są >= 60

# 2. Utwórz 'absent' — odwrotność attended

# 3. Utwórz 'at_risk' — NOT attended OR NOT odrobiona praca domowa

# 4. Utwórz 'passing_but_absent' — score >= 60 AND NOT attended

# 5. Utwórz 'needs_support' — (score < 50) OR (NOT attended AND NOT odrobiona praca domowa)

# Wyświetl wyniki
print(failed)
print(absent)
print(at_risk)
print(passing_but_absent)
print(needs_support)
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator R online