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

المنطق المتجهي - الجزء الثاني

جزء من قسم 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

تذكر: استخدم الرموز المفردة &، و |، و ! عند التعامل مع المتجهات، والرموز المزدوجة &&، و || عند مقارنة القيم المفردة.

challenge icon

التحدي

سهل

استخدم عامل النفي المتجه (!) جنباً إلى جنب مع & و | لإنشاء شروط منطقية معقدة لكل عنصر على حدة.

لقد تم تزويدك بالمتجهات التالية:

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)

استخدم العمليات المنطقية المتجهة بما في ذلك عامل النفي لإنشاء المتجهات المنطقية التالية:

  1. قم بإنشاء متجه يسمى failed يخزن القيمة TRUE لكل درجة ليست أكبر من أو تساوي 60
  2. قم بإنشاء متجه يسمى absent يخزن عكس قيم attended (اقلب كل قيمة)
  3. قم بإنشاء متجه يسمى at_risk يخزن القيمة TRUE لكل طالب لم يحضر أو لم يسلم الواجب المنزلي
  4. قم بإنشاء متجه يسمى passing_but_absent يخزن القيمة TRUE لكل طالب لديه درجة أكبر من أو تساوي 60 و لم يحضر
  5. قم بإنشاء متجه يسمى 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)
quiz iconاختبر نفسك

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

جميع دروس Fundamentals