Menu
Coddy logo textTech

Logika wektoryzowana, część 2

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

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

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

Każda wartość TRUE staje się FALSE, a każda wartość FALSE staje się 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ć zwektoryzowane NOT z & i |, aby tworzyć złożone filtry:

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

# Może uczestniczyć, jeśli: age >= 18 LUB (ma mniej niż 18 lat I ma pozwolenie)
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, a podwójnych &&, || podczas porównywania pojedynczych wartości.

challenge icon

Wyzwanie

Łatwy

Użyj zwektoryzowanego operatora NOT (!) wraz z & i |, aby utworzyć złożone warunki logiczne stosowane 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 TRUE dla każdego wyniku, który NIE jest większy 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 TRUE dla każdego ucznia, który NIE był obecny LUB NIE oddał pracy domowej
  4. Utwórz wektor o nazwie passing_but_absent, który przechowuje TRUE dla każdego ucznia, którego wynik jest większy lub równy 60 I który NIE był obecny
  5. Utwórz wektor o nazwie needs_support, który przechowuje TRUE dla każdego ucznia, dla którego: (wynik jest mniejszy niż 50) LUB (uczeń NIE był obecny 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ł

# Dane 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, gdy scores NIE spełnia warunku >= 60

# 2. Utwórz 'absent' — przeciwieństwo attended

# 3. Utwórz 'at_risk' — NOT attended OR nie oddano pracy domowej

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

# 5. Utwórz 'needs_support' — (wynik < 50) OR (NOT attended AND nie oddano pracy domowej)

# 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