Menu
Coddy logo textTech

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 TRUE

Her 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 FALSE

Vektö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 TRUE

Unutmayın: vektörlerle çalışırken tekli &, | ve !; tekil değerleri karşılaştırırken ise çiftli &&, || kullanın.

challenge icon

Görev

Kolay

Karmaşı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:

  1. 60'tan büyük veya eşit OLMAYAN her bir puan için TRUE değerini saklayan failed adında bir vektör oluşturun.
  2. attended vektörünün zıttını saklayan (her bir değeri tersine çeviren) absent adında bir vektör oluşturun.
  3. Derse katılım sağlamayan (NOT attend) VEYA ödevini teslim etmeyen (NOT submit homework) her bir öğrenci için TRUE değerini saklayan at_risk adında bir vektör oluşturun.
  4. Puanı 60'tan büyük veya eşit olan VE derse katılım sağlamayan (NOT attend) her bir öğrenci için TRUE değerini saklayan passing_but_absent adında bir vektör oluşturun.
  5. Şu koşullardan birini sağlayan her bir öğrenci için TRUE değerini saklayan needs_support adı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 TRUE

Bir koşulu sağlamayan elemanları bulmak için ! kullanın:

temperatures <- c(18, 25, 30, 15, 22)
!(temperatures > 20)  # TRUE FALSE FALSE TRUE FALSE

Karmaşı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 TRUE

Unutmayı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)
quiz iconKendini test et

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