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

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

جزء من قسم الأساسيات في رحلة R على Coddy. الدرس 21 من 78.

كما أن لـ AND وOR نسخًا متجهية، فإن عامل NOT يعمل أيضًا عنصرًا بعنصر على المتجهات. عند تطبيق ! على متجه من القيم المنطقية، فإنه يعكس كل عنصر على حدة.

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)

# يمكن المشاركة إذا: age >= 18 OR (under 18 AND has permission)
can_participate <- ages >= 18 | (ages < 18 & has_permission)
# TRUE TRUE FALSE TRUE TRUE

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

challenge icon

التحدي

سهل

استخدم عامل NOT المتجه (!) مع & و| لإنشاء شروط منطقية معقدة تُطبَّق على مستوى العناصر.

توفّرت لك المتجهات التالية:

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)

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

  1. أنشئ متجهًا يُسمّى failed يخزّن TRUE لكل درجة ليست أكبر من أو تساوي 60
  2. أنشئ متجهًا يُسمّى absent يخزّن عكس attended (اقلب كل قيمة)
  3. أنشئ متجهًا يُسمّى at_risk يخزّن TRUE لكل طالب لم يحضر NOT أو لم يسلّم الواجب
  4. أنشئ متجهًا يُسمّى passing_but_absent يخزّن TRUE لكل طالب لديه درجة أكبر من أو تساوي 60 وNOT لم يحضر
  5. أنشئ متجهًا يُسمّى needs_support يخزّن TRUE لكل طالب حيث: (الدرجة أقل من 50) أو (NOT حضر وNOT سلّم الواجب)

استخدم الدالة print() لعرض failed وabsent وat_risk وpassing_but_absent وneeds_support بهذا الترتيب الدقيق.

جرّب بنفسك

# المتجهات المعطاة
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 لـ scores NOT >= 60

# 2. أنشئ 'absent' - عكس attended

# 3. أنشئ 'at_risk' - NOT attended OR NOT submitted homework

# 4. أنشئ 'passing_but_absent' - score >= 60 AND NOT attended

# 5. أنشئ 'needs_support' - (score < 50) OR (NOT attended AND NOT submitted homework)

# اطبع النتائج
print(failed)
print(absent)
print(at_risk)
print(passing_but_absent)
print(needs_support)
quiz iconاختبر نفسك

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

جميع دروس الأساسيات

تدرّب بنفسك: مترجم R عبر الإنترنت