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] TRUEKamu 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 TRUEIni 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 2Operator %in% sangat berguna saat memvalidasi input pengguna atau memfilter data berdasarkan daftar nilai yang dapat diterima dan sudah ditentukan sebelumnya.
Tantangan
MudahKamu akan menerima tiga baris input:
- Daftar item yang dipisahkan koma di inventarismu (misalnya,
apple,banana,milk,bread,eggs,cheese) - Daftar item yang dipisahkan koma di daftar belanjamu (misalnya,
milk,butter,eggs,juice) - Daftar item yang dipisahkan koma dan sedang diskon (misalnya,
bread,juice,yogurt)
Dengan menggunakan operator %in%:
- Buat vektor karakter dari setiap input yang dipisahkan koma
- Periksa item daftar belanja yang sudah ada di inventarismu, lalu cetak hasil vektor logika
- Filter dan cetak item daftar belanja yang TIDAK ada di inventarismu (item yang perlu kamu beli)
- 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,butterOutput-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 didiskonPelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Dasar-Dasar
4Operator Bagian 2
Operator Logika (AND, OR)Operator Logika Bagian 2 (NOT)Rangkuman: Logika SederhanaLogika Tervektorisasi Bagian 1Logika Tervektorisasi Bagian 27Kalkulator Pembagi Tagihan
Pesan Selamat DatangMenerima Input Pengguna10FizzBuzz dengan Sentuhan Unik
Ikhtisar PermainanFungsi FizzBuzz13Vektor Lanjutan
Pemotongan dan Pengindeksan VektorPengindeksan LogisAritmetika Vektor dan Daur UlangOperator %in%2Variabel dan Tipe Data
Tipe Data NumerikTipe Data IntegerTipe Data KarakterTipe Data LogikaMemeriksa Tipe DataKonvensi PenamaanNilai yang Hilang: NARingkasan: Membuat Variabel8Perulangan
For LoopWhile LoopBreakBerikutnya (Continue)Ringkasan: FaktorialPembuatan Urutan (seq, :)Loop BersarangRingkasan: Input Dinamis3Operator Bagian 1
Operator AritmetikaPembagian Bilangan Bulat dan ModuloOperator PenugasanRangkuman: Matematika SederhanaOperator Perbandingan6Dasar input/output
Cetak outputcat untuk outputOutput dengan variabelMembaca input dengan readline()Dasar konversi tipe dataRingkasan: Kalkulator usiaRingkasan: Benar atau salah9Fungsi
Mendeklarasikan FungsiArgumen FungsiNilai KembalianUlasan: Fungsi SigmaUlasan: Fungsi ValidasiNilai Parameter Default12Melakukan Iterasi pada Urutan
Mengiterasi Elemen VektorMenggunakan seq_along()Mengiterasi Karakter (strsplitFungsi Manipulasi stringLatihan sendiri: Compiler R online