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 TRUEKaż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 FALSEMoż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 TRUEPamiętaj: używaj pojedynczych operatorów &, | i ! podczas pracy z wektorami, a podwójnych &&, || podczas porównywania pojedynczych wartości.
Wyzwanie
ŁatwyUż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:
- Utwórz wektor o nazwie
failed, który przechowujeTRUEdla każdego wyniku, który NIE jest większy lub równy 60 - Utwórz wektor o nazwie
absent, który przechowuje wartości przeciwne doattended(odwróć każdą wartość) - Utwórz wektor o nazwie
at_risk, który przechowujeTRUEdla każdego ucznia, który NIE był obecny LUB NIE oddał pracy domowej - Utwórz wektor o nazwie
passing_but_absent, który przechowujeTRUEdla każdego ucznia, którego wynik jest większy lub równy 60 I który NIE był obecny - Utwórz wektor o nazwie
needs_support, który przechowujeTRUEdla 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)Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
4Operatory, część 2
Operatory logiczne (AND, OR)Operatory logiczne, część 2 (NOT)Powtórka — prosta logikaLogika wektoryzowana, część 1Logika wektoryzowana, część 27Kalkulator podziału rachunku
Wiadomość powitalnaPobieranie danych od użytkownika10FizzBuzz z niespodzianką
Omówienie gryFunkcja FizzBuzz2Zmienne i typy danych
Liczbowy typ danychCałkowity typ danychZnakowy typ danychLogiczny typ danychSprawdzanie typów danychKonwencje nazewnictwaBrakujące wartości: NAPodsumowanie – tworzenie zmiennych8Pętle
Pętla forPętla whilePrzerwijNastępna iteracja (continue)Powtórka — silniaGenerowanie sekwencji (seq, :)Pętle zagnieżdżonePowtórka — dynamiczne wprowadzanie danych3Operatory, część 1
Operatory arytmetyczneDzielenie całkowite i moduloOperatory przypisaniaPowtórka — prosta matematykaOperatory porównania6Podstawowe wejście/wyjście
Wyświetlanie danychCat jako wyjścieWyjście z użyciem zmiennychOdczyt danych wejściowych za pomocą readline()Podstawy konwersji typówPowtórka — kalkulator wiekuPowtórka — prawda czy fałsz9Funkcje
Deklarowanie funkcjiArgumenty funkcjiWartości zwracanePowtórzenie — funkcja SigmaPowtórzenie — funkcja walidującaDomyślne wartości parametrówPoćwicz samodzielnie: Kompilator R online