%in% Operatörü
Coddy'nin R Journey'sinin Temeller bölümünün bir parçası — ders 70 / 78.
Bazen bir vektör içinde değerlerin var olup olmadığını kontrol etmeniz gerekir. %in% operatörü, eşleşen her öğe için TRUE ve aksi takdirde FALSE döndürerek üyelik testi yapmak için temiz bir yol sağlar.
Temel sözdizimi, soldaki değerlerin sağdaki vektörde bulunup bulunmadığını kontrol eder:
fruits <- c("apple", "banana", "cherry")
print("banana" %in% fruits)Çıktı:
[1] TRUEAynı anda birden fazla değeri de kontrol edebilirsiniz. Operatör, test edilen her bir değer için bir sonuç içeren mantıksal bir vektör döndürür:
fruits <- c("apple", "banana", "cherry")
check <- c("banana", "grape", "apple")
print(check %in% fruits)Çıktı:
[1] TRUE FALSE TRUEBu, %in% operatörünü filtreleme için mükemmel kılar. Mantıksal indeksleme ile birleştirildiğinde, belirli bir kümeye ait öğeleri ayıklayabilirsiniz:
numbers <- c(1, 5, 3, 8, 2, 9)
allowed <- c(1, 2, 3)
print(numbers[numbers %in% allowed])Çıktı:
[1] 1 3 2%in% operatörü, kullanıcı girişini doğrularken veya verileri önceden tanımlanmış kabul edilebilir değerler listesine göre filtrelerken özellikle yararlıdır.
Görev
KolayÜç satırlık bir girdi alacaksınız:
- Envanterinizdeki öğelerin virgülle ayrılmış listesi (örneğin,
apple,banana,milk,bread,eggs,cheese) - Alışveriş listenizdeki öğelerin virgülle ayrılmış listesi (örneğin,
milk,butter,eggs,juice) - İndirimde olan öğelerin virgülle ayrılmış listesi (örneğin,
bread,juice,yogurt)
%in% operatörünü kullanarak:
- Her bir virgülle ayrılmış girdiden karakter vektörleri oluşturun
- Alışveriş listesindeki hangi öğelerin envanterinizde zaten bulunduğunu kontrol edin ve mantıksal vektör sonucunu yazdırın
- Envanterinizde bulunmayan alışveriş listesi öğelerini (satın almanız gereken öğeler) filtreleyin ve yazdırın
- Satın almanız gereken ve aynı zamanda indirimde olan öğeleri filtreleyin ve yazdırın
Örneğin, girdiler şunlarsa:
apple,banana,milk,bread,eggs
milk,butter,eggs,juice,apple
bread,juice,yogurt,butterÇıktı şöyle olmalıdır:
[1] TRUE FALSE TRUE FALSE TRUE
[1] "butter" "juice"
[1] "butter" "juice"Açıklama:
- Envantere göre kontrol edilen alışveriş listesi: milk (TRUE), butter (FALSE), eggs (TRUE), juice (FALSE), apple (TRUE)
- Envanterde OLMAYAN öğeler (satın alınması gerekenler): butter, juice
- İndirimde olan satın alınacak öğeler: butter ve juice her ikisi de indirim listesinde
Bir vektörde OLMAYAN öğeleri bulmak için %in% ile birlikte ! operatörünü kullanın.
Kopya kağıdı
%in% operatörü, değerlerin bir vektör içinde olup olmadığını kontrol eder ve TRUE veya FALSE döndürür:
fruits <- c("apple", "banana", "cherry")
print("banana" %in% fruits)Çıktı:
[1] TRUEMantıksal bir vektör elde etmek için aynı anda birden fazla değeri kontrol edin:
fruits <- c("apple", "banana", "cherry")
check <- c("banana", "grape", "apple")
print(check %in% fruits)Çıktı:
[1] TRUE FALSE TRUEElemanları filtrelemek için mantıksal indeksleme ile %in% kullanın:
numbers <- c(1, 5, 3, 8, 2, 9)
allowed <- c(1, 2, 3)
print(numbers[numbers %in% allowed])Çıktı:
[1] 1 3 2Bir vektörde OLMAYAN öğeleri bulmak için %in% ile birlikte ! kullanın:
items <- c("milk", "butter", "eggs")
inventory <- c("milk", "eggs")
print(items[!items %in% inventory])Çıktı:
[1] "butter"Kendin dene
# Girdiyi oku
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: Kodunuzu aşağıya yazın
# 1. strsplit() kullanarak virgülle ayrılmış her girdiden karakter vektörleri oluşturun
# 2. Alışveriş listesindeki hangi ürünlerin envanterinizde zaten bulunduğunu kontrol edin (%in% kullanın)
# 3. Envanterinizde bulunmayan alışveriş listesi ürünlerini filtreleyin (%in% ile ! kullanın)
# 4. Satın almanız gereken ve aynı zamanda indirimde olan ürünleri filtreleyinBu 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 Fonksiyonu13İleri Seviye Vektörler
Vektör Dilimleme ve İndekslemeMantıksal İndekslemeVektör Aritmetiği ve Geri Dönüşüm%in% Operatörü2Değ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