Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

المعامل %in%

جزء من قسم Fundamentals في رحلة R على Coddy — الدرس 70 من 78.

في بعض الأحيان تحتاج إلى التحقق مما إذا كانت القيم موجودة داخل متجه (vector). يوفر عامل التشغيل %in% طريقة نظيفة لاختبار العضوية، حيث يعيد TRUE لكل عنصر متطابق و FALSE بخلاف ذلك.

تتحقق الصيغة الأساسية مما إذا كانت القيم الموجودة على اليسار موجودة في المتجه (vector) الموجود على اليمين:

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

المخرجات:

[1] TRUE

يمكنك أيضًا التحقق من قيم متعددة في وقت واحد. يعيد العامل (operator) متجهًا منطقيًا بنتيجة واحدة لكل قيمة يتم اختبارها:

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

المخرجات:

[1]  TRUE FALSE  TRUE

هذا يجعل %in% مثاليًا للتصفية. وبالاشتراك مع الفهرسة المنطقية، يمكنك استخراج العناصر التي تنتمي إلى مجموعة معينة:

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

المخرجات:

[1] 1 3 2

إن عامل %in% مفيد بشكل خاص عند التحقق من صحة مدخلات المستخدم أو تصفية البيانات بناءً على قائمة محددة مسبقاً من القيم المقبولة.

challenge icon

التحدي

سهل

ستتلقى ثلاثة أسطر من المدخلات:

  1. قائمة مفصولة بفاصلة للعناصر الموجودة في مخزونك (على سبيل المثال، apple,banana,milk,bread,eggs,cheese)
  2. قائمة مفصولة بفاصلة للعناصر الموجودة في قائمة التسوق الخاصة بك (على سبيل المثال، milk,butter,eggs,juice)
  3. قائمة مفصولة بفاصلة للعناصر المعروضة للبيع (على سبيل المثال، bread,juice,yogurt)

باستخدام عامل التشغيل %in%:

  1. قم بإنشاء متجهات حرفية (character vectors) من كل مدخل مفصول بفاصلة
  2. تحقق من عناصر قائمة التسوق التي تمتلكها بالفعل في مخزونك واطبع نتيجة المتجه المنطقي (logical vector)
  3. قم بتصفية وطباعة عناصر قائمة التسوق التي لا تملكها في مخزونك (العناصر التي تحتاج إلى شرائها)
  4. قم بتصفية وطباعة العناصر التي تحتاج إلى شرائها والموجودة أيضاً ضمن العروض (on sale)

على سبيل المثال، إذا كانت المدخلات هي:

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

يجب أن تكون المخرجات:

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

التفسير:

  • التحقق من قائمة التسوق مقابل المخزون: milk (TRUE)، butter (FALSE)، eggs (TRUE)، juice (FALSE)، apple (TRUE)
  • العناصر غير الموجودة في المخزون (التي يجب شراؤها): butter، juice
  • العناصر المطلوب شراؤها والموجودة ضمن العروض: butter و juice كلاهما موجود في قائمة العروض

استخدم عامل التشغيل ! مع %in% للعثور على العناصر غير الموجودة في المتجه.

ورقة مرجعية

يتحقق عامل التشغيل %in% مما إذا كانت القيم موجودة داخل متجه (vector)، ويعيد TRUE أو FALSE:

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

المخرجات:

[1] TRUE

تحقق من قيم متعددة في وقت واحد للحصول على متجه منطقي (logical vector):

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

المخرجات:

[1]  TRUE FALSE  TRUE

استخدم %in% مع الفهرسة المنطقية (logical indexing) لتصفية العناصر:

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

المخرجات:

[1] 1 3 2

استخدم ! مع %in% للعثور على العناصر غير الموجودة في المتجه:

items <- c("milk", "butter", "eggs")
inventory <- c("milk", "eggs")
print(items[!items %in% inventory])

المخرجات:

[1] "butter"

جرّب بنفسك

# قراءة المدخلات
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: اكتب الكود الخاص بك أدناه
# 1. قم بإنشاء متجهات نصية من كل مدخل مفصول بفاصلة باستخدام strsplit()
# 2. تحقق من عناصر قائمة التسوق الموجودة بالفعل في المخزون (استخدم %in%)
# 3. قم بتصفية عناصر قائمة التسوق التي ليست موجودة في المخزون (استخدم ! مع %in%)
# 4. قم بتصفية العناصر التي تحتاج إلى شرائها والموجودة أيضاً في التخفيضات
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Fundamentals