Vektörize Mantık Bölüm 2
Coddy'nin R Journey'sinin Temeller bölümünün bir parçası — ders 21 / 78.
Tıpkı AND ve OR'un vektörleştirilmiş sürümleri olduğu gibi, NOT operatörü de vektörler üzerinde eleman bazında çalışır. Mantıksal değerlerden oluşan bir vektöre ! uyguladığınızda, her bir elemanı ayrı ayrı tersine çevirir.
passed <- c(TRUE, FALSE, TRUE, FALSE)
!passed # FALSE TRUE FALSE TRUEHer TRUE değeri FALSE'a, her FALSE değeri ise TRUE'ya dönüşür. Bu, özellikle belirli bir koşulu sağlamayan öğeleri bulmak istediğinizde kullanışlıdır:
temperatures <- c(18, 25, 30, 15, 22)
# 20'den büyük OLMAYAN sıcaklıkları bul
!(temperatures > 20) # TRUE FALSE FALSE TRUE FALSEVektörleştirilmiş NOT işlemini, karmaşık filtreler oluşturmak için & ve | ile birleştirebilirsiniz:
ages <- c(16, 25, 18, 30, 14)
has_permission <- c(TRUE, TRUE, FALSE, TRUE, TRUE)
# Şu durumda katılabilir: yaş >= 18 VEYA (18 yaş altı VE izni var)
can_participate <- ages >= 18 | (ages < 18 & has_permission)
# TRUE TRUE FALSE TRUE TRUEUnutmayın: vektörlerle çalışırken tekli &, | ve !; tekil değerleri karşılaştırırken ise çiftli &&, || kullanın.
Görev
KolayKarmaşık eleman bazlı mantıksal koşullar oluşturmak için vektörleştirilmiş NOT operatörünü (!), & ve | operatörleriyle birlikte kullanın.
Size aşağıdaki vektörler verilmiştir:
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)Aşağıdaki mantıksal vektörleri oluşturmak için NOT operatörü dahil vektörleştirilmiş mantıksal operatörleri kullanın:
- 60'tan büyük veya eşit OLMAYAN her bir puan için
TRUEdeğerini saklayanfailedadında bir vektör oluşturun. attendedvektörünün zıttını saklayan (her bir değeri tersine çeviren)absentadında bir vektör oluşturun.- Derse katılım sağlamayan (NOT attend) VEYA ödevini teslim etmeyen (NOT submit homework) her bir öğrenci için
TRUEdeğerini saklayanat_riskadında bir vektör oluşturun. - Puanı 60'tan büyük veya eşit olan VE derse katılım sağlamayan (NOT attend) her bir öğrenci için
TRUEdeğerini saklayanpassing_but_absentadında bir vektör oluşturun. - Şu koşullardan birini sağlayan her bir öğrenci için
TRUEdeğerini saklayanneeds_supportadında bir vektör oluşturun: (puan 50'den küçük) VEYA (derse katılım sağlamamış (NOT attend) VE ödevini teslim etmemiş (NOT submit homework)).
failed, absent, at_risk, passing_but_absent ve needs_support vektörlerini tam olarak bu sırayla görüntülemek için print() fonksiyonunu kullanın.
Kopya kağıdı
NOT operatörü (!), vektörler üzerinde eleman bazlı çalışarak her bir mantıksal değeri tek tek tersine çevirir:
passed <- c(TRUE, FALSE, TRUE, FALSE)
!passed # FALSE TRUE FALSE TRUEBir koşulu sağlamayan elemanları bulmak için ! kullanın:
temperatures <- c(18, 25, 30, 15, 22)
!(temperatures > 20) # TRUE FALSE FALSE TRUE FALSEKarmaşık filtreler için vektörleştirilmiş NOT operatörünü & ve | ile birleştirin:
ages <- c(16, 25, 18, 30, 14)
has_permission <- c(TRUE, TRUE, FALSE, TRUE, TRUE)
# Şu durumda katılabilir: yaş >= 18 VEYA (18 yaş altı VE izni var)
can_participate <- ages >= 18 | (ages < 18 & has_permission)
# TRUE TRUE FALSE TRUE TRUEUnutmayın: Vektörler için tekli &, | ve ! kullanın; tek değerler için çiftli &&, || kullanın.
Kendin dene
# Verilen vektörler
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: Kodunuzu aşağıya yazın
# 1. 'failed' oluşturun - puanı 60'tan büyük veya eşit OLMAYANLAR için TRUE
# 2. 'absent' oluşturun - attended vektörünün tersi
# 3. 'at_risk' oluşturun - derse katılmamış (NOT attended) VEYA ödev teslim etmemiş (NOT submitted homework)
# 4. 'passing_but_absent' oluşturun - puanı >= 60 VE derse katılmamış (NOT attended)
# 5. 'needs_support' oluşturun - (puan < 50) VEYA (derse katılmamış VE ödev teslim etmemiş)
# Sonuçları yazdırın
print(failed)
print(absent)
print(at_risk)
print(passing_but_absent)
print(needs_support)Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Temeller bölümündeki tüm dersler
4Operatörler Bölüm 2
Mantıksal Operatörler (AND, OR)Mantıksal Operatörler Bölüm 2 (NOT)Özet - Basit MantıkVektörize Mantık Bölüm 1Vektörize Mantık Bölüm 27Hesap Paylaşım Hesaplayıcısı
Hoş Geldiniz MesajıKullanıcıdan Girdi Alma10Farklı Bir FizzBuzz
Oyuna Genel BakışFizzBuzz Fonksiyonu2Değişkenler ve Veri Tipleri
Sayısal Veri TipiTam Sayı Veri TipiKarakter Veri TipiMantıksal Veri TipiVeri Tiplerini Kontrol Etmeİsimlendirme KurallarıEksik Değerler: NAÖzet - Değişken Oluşturma8Döngüler
For DöngüsüWhile DöngüsüBreakNext (Continue)Özet - FaktöriyelDizi Oluşturma (seq, :)İç İçe DöngülerÖzet - Dinamik Girdi3Operatörler 1. Bölüm
Aritmetik OperatörlerTam Sayı Bölmesi ve Mod AlmaAtama OperatörleriÖzet - Basit MatematikKarşılaştırma Operatörleri6Temel Giriş-Çıkış
Print ÇıktısıÇıktı için Cat KullanımıDeğişkenlerle Çıktı Almakreadline() ile Girdi OkumaTip Dönüşümü TemelleriÖzet - Yaş HesaplayıcıÖzet - Doğru mu Yanlış mı9Fonksiyonlar
Fonksiyon TanımlamaFonksiyon ArgümanlarıDönüş DeğerleriÖzet - Sigma FonksiyonuÖzet - Doğrulama FonksiyonuVarsayılan Parametre Değerleri