المعامل %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% مفيد بشكل خاص عند التحقق من صحة مدخلات المستخدم أو تصفية البيانات بناءً على قائمة محددة مسبقاً من القيم المقبولة.
التحدي
سهلستتلقى ثلاثة أسطر من المدخلات:
- قائمة مفصولة بفاصلة للعناصر الموجودة في مخزونك (على سبيل المثال،
apple,banana,milk,bread,eggs,cheese) - قائمة مفصولة بفاصلة للعناصر الموجودة في قائمة التسوق الخاصة بك (على سبيل المثال،
milk,butter,eggs,juice) - قائمة مفصولة بفاصلة للعناصر المعروضة للبيع (على سبيل المثال،
bread,juice,yogurt)
باستخدام عامل التشغيل %in%:
- قم بإنشاء متجهات حرفية (character vectors) من كل مدخل مفصول بفاصلة
- تحقق من عناصر قائمة التسوق التي تمتلكها بالفعل في مخزونك واطبع نتيجة المتجه المنطقي (logical vector)
- قم بتصفية وطباعة عناصر قائمة التسوق التي لا تملكها في مخزونك (العناصر التي تحتاج إلى شرائها)
- قم بتصفية وطباعة العناصر التي تحتاج إلى شرائها والموجودة أيضاً ضمن العروض (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. قم بتصفية العناصر التي تحتاج إلى شرائها والموجودة أيضاً في التخفيضاتيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Fundamentals
4المعاملات - الجزء الثاني
المعاملات المنطقية (AND, OR)المعاملات المنطقية - الجزء الثاني (NOT)مراجعة - المنطق البسيطالمنطق المتجهي - الجزء الأولالمنطق المتجهي - الجزء الثاني7حاسبة تقسيم الفاتورة
رسالة الترحيبالحصول على مدخلات المستخدم13المتجهات المتقدمة
تقطيع وفهرسة المتجهاتالفهرسة المنطقيةالعمليات الحسابية وإعادة تدوير المتجهاتالمعامل %in%2المتغيرات وأنواع البيانات
نوع البيانات الرقمينوع البيانات الصحيحنوع البيانات الحرفينوع البيانات المنطقيالتحقق من أنواع البياناتقواعد التسميةالقيم المفقودة: NAملخص - إنشاء المتغيرات8الحلقات التكرارية
حلقة Forحلقة Whileجملة Breakجملة Next (Continue)مراجعة - المضروب (Factorial)توليد المتتاليات (seq, :)الحلقات المتداخلةمراجعة - الإدخال الديناميكي (Dynamic Input)3المعاملات - الجزء الأول
المعاملات الحسابيةقسمة الأعداد الصحيحة وباقي القسمةمعاملات الإسنادملخص - عمليات رياضية بسيطةمعاملات المقارنة6أساسيات الإدخال والإخراج
طباعة المخرجاتاستخدام Cat للمخرجاتالمخرجات مع المتغيراتقراءة المدخلات باستخدام readline()أساسيات تحويل أنواع البياناتمراجعة - حاسبة العمرمراجعة - صح أم خطأ