Menu
CoddyTech

Logika Tervektorisasi Bagian 2

Termasuk bagian Dasar-Dasar dalam perjalanan R di Coddy. Pelajaran 21 dari 78.

Sama seperti AND dan OR yang memiliki versi tervectorisasi, operator NOT juga bekerja pada setiap elemen vektor. Saat kamu menerapkan ! pada vektor nilai logis, operator ini membalik setiap elemen satu per satu.

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

Setiap TRUE menjadi FALSE, dan setiap FALSE menjadi TRUE. Ini sangat berguna saat kamu ingin menemukan elemen yang tidak memenuhi kondisi tertentu:

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

# Cari suhu yang TIDAK lebih dari 20
!(temperatures > 20)  # TRUE FALSE FALSE TRUE FALSE

Kamu dapat menggabungkan NOT vektorisasi dengan & dan | untuk membuat filter yang kompleks:

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

# Kamu bisa ikut jika: usia >= 18 OR (di bawah 18 AND memiliki izin)
can_participate <- ages >= 18 | (ages < 18 & has_permission)
# TRUE TRUE FALSE TRUE TRUE

Ingat: gunakan &, |, dan ! tunggal saat bekerja dengan vektor, serta && dan || ganda saat membandingkan nilai tunggal.

challenge icon

Tantangan

Mudah

Gunakan operator NOT yang divektorkan (!) bersama & dan | untuk membuat kondisi logis kompleks yang diterapkan pada setiap elemen.

Kamu diberikan vektor berikut:

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)

Gunakan operator logis yang divektorkan, termasuk operator NOT, untuk membuat vektor logis berikut:

  1. Buat vektor bernama failed yang menyimpan TRUE untuk setiap nilai skor yang TIDAK lebih besar dari atau sama dengan 60
  2. Buat vektor bernama absent yang menyimpan kebalikan dari attended (balik setiap nilainya)
  3. Buat vektor bernama at_risk yang menyimpan TRUE untuk setiap siswa yang TIDAK hadir ATAU TIDAK mengumpulkan PR
  4. Buat vektor bernama passing_but_absent yang menyimpan TRUE untuk setiap siswa dengan skor lebih besar dari atau sama dengan 60 DAN TIDAK hadir
  5. Buat vektor bernama needs_support yang menyimpan TRUE untuk setiap siswa yang memenuhi kondisi: (skor kurang dari 50) ATAU (TIDAK hadir DAN TIDAK mengumpulkan PR)

Gunakan fungsi print() untuk menampilkan failed, absent, at_risk, passing_but_absent, dan needs_support dalam urutan tersebut.

Coba sendiri

# Vektor yang diberikan
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: Tulis kodemu di bawah ini
# 1. Buat 'failed': TRUE jika scores tidak >= 60

# 2. Buat 'absent': kebalikan dari attended

# 3. Buat 'at_risk': bukan attended ATAU tidak mengumpulkan tugas rumah

# 4. Buat 'passing_but_absent': score >= 60 DAN bukan attended

# 5. Buat 'needs_support': (score < 50) ATAU (bukan attended DAN tidak mengumpulkan tugas rumah)

# Cetak hasilnya
print(failed)
print(absent)
print(at_risk)
print(passing_but_absent)
print(needs_support)
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Dasar-Dasar

Latihan sendiri: Compiler R online