Menu
Coddy logo textTech

%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] TRUE

Aynı 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  TRUE

Bu, %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.

challenge icon

Görev

Kolay

Üç satır girdi alacaksınız:

  1. Envanterinizdeki öğelerin virgülle ayrılmış listesi (ör. apple,banana,milk,bread,eggs,cheese)
  2. Alışveriş listenizdeki öğelerin virgülle ayrılmış listesi (ör. milk,butter,eggs,juice)
  3. İndirimde olan öğelerin virgülle ayrılmış listesi (ör. bread,juice,yogurt)

%in% operatörünü kullanarak:

  1. Virgülle ayrılmış her girdiden karakter vektörleri oluşturun
  2. Alışveriş listesindeki hangi öğelerin envanterinizde zaten bulunduğunu kontrol edin ve mantıksal vektör sonucunu yazdırın
  3. Envanterinizde olmayan alışveriş listesi öğelerini (satın almanız gereken öğeleri) filtreleyin ve yazdırın
  4. Satın almanız gereken ve aynı zamanda indirimde olan öğeleri filtreleyin ve yazdırın

Örneğin girdiler şöyleyse:

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:

  • Alışveriş listesi envantere göre kontrol edildi: 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 indirim listesinin ikisinde de bulunuyor

Bir vektörde OLMAYAN öğeleri bulmak için ! operatörünü %in% ile birlikte kullanın.

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 filtreleyin
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

Kendi başına pratik yap: Online R derleyicisi