Menu
CoddyTech

Operator %in%

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

Terkadang kamu perlu memeriksa apakah nilai ada di dalam vector. Operator %in% menyediakan cara yang mudah untuk menguji keanggotaan, dengan mengembalikan TRUE untuk setiap elemen yang cocok dan FALSE jika tidak.

Sintaks dasar memeriksa apakah nilai di sebelah kiri ada dalam vector di sebelah kanan:

fruits <- c("apple", "banana", "cherry")
print("banana" %in% fruits)

Keluaran:

[1] TRUE

Kamu juga bisa memeriksa beberapa nilai sekaligus. Operator ini mengembalikan vektor logis dengan satu hasil untuk setiap nilai yang diuji:

fruits <- c("apple", "banana", "cherry")
check <- c("banana", "grape", "apple")
print(check %in% fruits)

Output:

[1]  TRUE FALSE  TRUE

Ini membuat %in% sangat cocok untuk pemfilteran. Jika digabungkan dengan pengindeksan logis, kamu dapat mengekstrak elemen yang termasuk dalam set tertentu:

numbers <- c(1, 5, 3, 8, 2, 9)
allowed <- c(1, 2, 3)
print(numbers[numbers %in% allowed])

Output:

[1] 1 3 2

Operator %in% sangat berguna saat memvalidasi input pengguna atau memfilter data berdasarkan daftar nilai yang dapat diterima dan sudah ditentukan sebelumnya.

challenge icon

Tantangan

Mudah

Kamu akan menerima tiga baris input:

  1. Daftar item yang dipisahkan koma di inventarismu (misalnya, apple,banana,milk,bread,eggs,cheese)
  2. Daftar item yang dipisahkan koma di daftar belanjamu (misalnya, milk,butter,eggs,juice)
  3. Daftar item yang dipisahkan koma dan sedang diskon (misalnya, bread,juice,yogurt)

Dengan menggunakan operator %in%:

  1. Buat vektor karakter dari setiap input yang dipisahkan koma
  2. Periksa item daftar belanja yang sudah ada di inventarismu, lalu cetak hasil vektor logika
  3. Filter dan cetak item daftar belanja yang TIDAK ada di inventarismu (item yang perlu kamu beli)
  4. Filter dan cetak item yang perlu kamu beli dan sedang diskon

Misalnya, jika inputnya adalah:

apple,banana,milk,bread,eggs
milk,butter,eggs,juice,apple
bread,juice,yogurt,butter

Output-nya harus seperti berikut:

[1]  TRUE FALSE  TRUE FALSE  TRUE
[1] "butter" "juice" 
[1] "butter" "juice"

Penjelasan:

  • Daftar belanja yang diperiksa terhadap inventaris: milk (TRUE), butter (FALSE), eggs (TRUE), juice (FALSE), apple (TRUE)
  • Item yang TIDAK ada di inventaris (perlu dibeli): butter, juice
  • Item yang perlu dibeli dan sedang diskon: butter dan juice sama-sama ada di daftar diskon

Gunakan operator ! dengan %in% untuk menemukan item yang TIDAK ada dalam sebuah vektor.

Coba sendiri

# Baca input
con <- file("stdin", "r")
inventory_input <- suppressWarnings(readLines(con, n = 1))
shopping_list_input <- suppressWarnings(readLines(con, n = 1))
sale_items_input <- suppressWarnings(readLines(con, n = 1))
close(con)

# TODO: Tulis kodemu di bawah ini
# 1. Buat vektor karakter dari setiap input yang dipisahkan koma menggunakan strsplit()
# 2. Periksa item dalam list belanjamu yang sudah ada di inventarismu (gunakan %in%)
# 3. Saring item dalam list belanjamu yang TIDAK ada di inventarismu (gunakan ! dengan %in%)
# 4. Saring item yang perlu kamu beli dan sedang didiskon
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