المنطق المتجهي - الجزء الثاني
جزء من قسم Fundamentals في رحلة R على Coddy — الدرس 21 من 78.
تماماً كما تمتلك AND و OR نسخاً موجهة (vectorized)، فإن عامل التشغيل NOT يعمل أيضاً على مستوى العناصر (element-wise) في المتجهات. فعندما تقوم بتطبيق ! على متجه من القيم المنطقية، فإنه يقلب كل عنصر بشكل فردي.
passed <- c(TRUE, FALSE, TRUE, FALSE)
!passed # FALSE TRUE FALSE TRUEتصبح كل قيمة TRUE هي FALSE، وتصبح كل قيمة FALSE هي TRUE. هذا مفيد بشكل خاص عندما تريد العثور على عناصر لا تستوفي شرطاً معيناً:
temperatures <- c(18, 25, 30, 15, 22)
# البحث عن درجات الحرارة التي ليست أكبر من 20
!(temperatures > 20) # TRUE FALSE FALSE TRUE FALSEيمكنك دمج NOT الموجهة مع & و | لبناء عوامل تصفية معقدة:
ages <- c(16, 25, 18, 30, 14)
has_permission <- c(TRUE, TRUE, FALSE, TRUE, TRUE)
# يمكن المشاركة إذا كان: العمر >= 18 أو (أقل من 18 ولديه إذن)
can_participate <- ages >= 18 | (ages < 18 & has_permission)
# TRUE TRUE FALSE TRUE TRUEتذكر: استخدم الرموز المفردة &، و |، و ! عند التعامل مع المتجهات، والرموز المزدوجة &&، و || عند مقارنة القيم المفردة.
التحدي
سهلاستخدم عامل النفي المتجه (!) جنباً إلى جنب مع & و | لإنشاء شروط منطقية معقدة لكل عنصر على حدة.
لقد تم تزويدك بالمتجهات التالية:
scores <- c(45, 72, 88, 55, 91, 38, 67)
attended <- c(TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE)
submitted_homework <- c(TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE)استخدم العمليات المنطقية المتجهة بما في ذلك عامل النفي لإنشاء المتجهات المنطقية التالية:
- قم بإنشاء متجه يسمى
failedيخزن القيمةTRUEلكل درجة ليست أكبر من أو تساوي 60 - قم بإنشاء متجه يسمى
absentيخزن عكس قيمattended(اقلب كل قيمة) - قم بإنشاء متجه يسمى
at_riskيخزن القيمةTRUEلكل طالب لم يحضر أو لم يسلم الواجب المنزلي - قم بإنشاء متجه يسمى
passing_but_absentيخزن القيمةTRUEلكل طالب لديه درجة أكبر من أو تساوي 60 و لم يحضر - قم بإنشاء متجه يسمى
needs_supportيخزن القيمةTRUEلكل طالب حيث: (الدرجة أقل من 50) أو (لم يحضر و لم يسلم الواجب المنزلي)
استخدم دالة print() لعرض failed، و absent، و at_risk، و passing_but_absent، و needs_support بهذا الترتيب تماماً.
ورقة مرجعية
يعمل عامل النفي NOT (!) على مستوى العناصر في المتجهات، حيث يقوم بقلب كل قيمة منطقية بشكل فردي:
passed <- c(TRUE, FALSE, TRUE, FALSE)
!passed # FALSE TRUE FALSE TRUEاستخدم ! للعثور على العناصر التي لا تستوفي شرطاً معيناً:
temperatures <- c(18, 25, 30, 15, 22)
!(temperatures > 20) # TRUE FALSE FALSE TRUE FALSEيمكنك دمج عامل النفي NOT المتجهي مع & و | لإنشاء فلاتر معقدة:
ages <- c(16, 25, 18, 30, 14)
has_permission <- c(TRUE, TRUE, FALSE, TRUE, TRUE)
# Can participate if: age >= 18 OR (under 18 AND has permission)
can_participate <- ages >= 18 | (ages < 18 & has_permission)
# TRUE TRUE FALSE TRUE TRUEتذكر: استخدم العلامات المفردة & و | و ! للمتجهات؛ واستخدم العلامات المزدوجة && و || للقيم المفردة.
جرّب بنفسك
# المتجهات المعطاة
scores <- c(45, 72, 88, 55, 91, 38, 67)
attended <- c(TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE)
submitted_homework <- c(TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE)
# TODO: اكتب الكود الخاص بك أدناه
# 1. إنشاء 'failed' - القيمة TRUE للدرجات التي ليست >= 60
# 2. إنشاء 'absent' - عكس attended
# 3. إنشاء 'at_risk' - لم يحضر (NOT attended) أو لم يسلم الواجب (NOT submitted homework)
# 4. إنشاء 'passing_but_absent' - الدرجة >= 60 و لم يحضر (NOT attended)
# 5. إنشاء 'needs_support' - (الدرجة < 50) أو (لم يحضر AND لم يسلم الواجب)
# طباعة النتائج
print(failed)
print(absent)
print(at_risk)
print(passing_but_absent)
print(needs_support)يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Fundamentals
4المعاملات - الجزء الثاني
المعاملات المنطقية (AND, OR)المعاملات المنطقية - الجزء الثاني (NOT)مراجعة - المنطق البسيطالمنطق المتجهي - الجزء الأولالمنطق المتجهي - الجزء الثاني2المتغيرات وأنواع البيانات
نوع البيانات الرقمينوع البيانات الصحيحنوع البيانات الحرفينوع البيانات المنطقيالتحقق من أنواع البياناتقواعد التسميةالقيم المفقودة: NAملخص - إنشاء المتغيرات8الحلقات التكرارية
حلقة Forحلقة Whileجملة Breakجملة Next (Continue)مراجعة - المضروب (Factorial)توليد المتتاليات (seq, :)الحلقات المتداخلةمراجعة - الإدخال الديناميكي (Dynamic Input)3المعاملات - الجزء الأول
المعاملات الحسابيةقسمة الأعداد الصحيحة وباقي القسمةمعاملات الإسنادملخص - عمليات رياضية بسيطةمعاملات المقارنة6أساسيات الإدخال والإخراج
طباعة المخرجاتاستخدام Cat للمخرجاتالمخرجات مع المتغيراتقراءة المدخلات باستخدام readline()أساسيات تحويل أنواع البياناتمراجعة - حاسبة العمرمراجعة - صح أم خطأ