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

الفهرسة المنطقية

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

بدلاً من تحديد مواضع دقيقة، يمكنك استخدام متجه منطقي (logical vector) لاختيار العناصر. تتيح لك هذه التقنية، التي تسمى الفهرسة المنطقية (logical indexing)، تصفية متجه بناءً على شروط بدلاً من المواضع.

عندما تقوم بتطبيق مقارنة على متجه (vector)، فإن لغة R تعيد متجهاً منطقياً (logical vector) بنفس الطول:

numbers <- c(10, 20, 30, 40, 50)
print(numbers > 25)

المخرجات:

[1] FALSE FALSE  TRUE  TRUE  TRUE

يمكنك استخدام هذا المتجه المنطقي مباشرة داخل الأقواس المربعة لاستخراج العناصر المطابقة:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[numbers > 25])

المخرجات:

[1] 30 40 50

يحتفظ R فقط بالعناصر التي يكون فيها المتجه المنطقي TRUE. هذا النهج أنظف بكثير من كتابة الحلقات (loops) لتصفية البيانات. يمكنك دمج الشروط باستخدام العمليات المنطقية:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[numbers >= 20 & numbers <= 40])

الناتج:

[1] 20 30 40

تعد الفهرسة المنطقية واحدة من أقوى ميزات لغة R لمعالجة البيانات، حيث تتيح لك تصفية مجموعات البيانات باستخدام تعبيرات بسيطة وسهلة القراءة.

challenge icon

التحدي

سهل

ستتلقى سطرين من المدخلات:

  1. قائمة من الأرقام مفصولة بفاصلة (على سبيل المثال، 15,42,8,67,23,91,34,12,56)
  2. قيمتان للعتبة (threshold) مفصولتان بفاصلة تمثلان نطاقاً (على سبيل المثال، 20,60)

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

  1. أنشئ متجهاً رقمياً (numeric vector) من الأرقام المفصولة بفاصلة
  2. استخرج واطبع جميع العناصر التي هي أقل من العتبة الأولى (الحد الأدنى)
  3. استخرج واطبع جميع العناصر التي هي أكبر من العتبة الثانية (الحد الأقصى)
  4. استخرج واطبع جميع العناصر التي تقع ضمن النطاق (أكبر من أو تساوي العتبة الأولى وَ أقل من أو تساوي العتبة الثانية)

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

5,25,10,45,60,15,80,35,50
20,50

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

[1]  5 10 15
[1] 60 80
[1] 25 45 35 50

التفسير:

  • العناصر الأقل من 20: 5، 10، 15
  • العناصر الأكبر من 50: 60، 80
  • العناصر بين 20 و 50 (شاملة): 25، 45، 35، 50

استخدم المعامل & لدمج الشروط لفلترة النطاق.

ورقة مرجعية

تسمح لك الفهرسة المنطقية بتصفية متجه بناءً على شروط بدلاً من المواقع. عندما تقوم بتطبيق مقارنة على متجه، فإن لغة R تعيد متجهاً منطقياً:

numbers <- c(10, 20, 30, 40, 50)
print(numbers > 25)
# المخرجات: [1] FALSE FALSE  TRUE  TRUE  TRUE

استخدم المتجه المنطقي داخل الأقواس المربعة لاستخراج العناصر المطابقة:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[numbers > 25])
# المخرجات: [1] 30 40 50

قم بدمج الشروط باستخدام المعاملات المنطقية مثل & (AND):

numbers <- c(10, 20, 30, 40, 50)
print(numbers[numbers >= 20 & numbers <= 40])
# المخرجات: [1] 20 30 40

جرّب بنفسك

# قراءة المدخلات
con <- file("stdin", "r")
numbers_input <- suppressWarnings(readLines(con, n = 1))
thresholds_input <- suppressWarnings(readLines(con, n = 1))
close(con)

# تحليل الأرقام المفصولة بفاصلة إلى متجه عددي
numbers <- as.numeric(unlist(strsplit(numbers_input, ",")))

# تحليل قيم العتبة
thresholds <- as.numeric(unlist(strsplit(thresholds_input, ",")))
lower_bound <- thresholds[1]
upper_bound <- thresholds[2]

# TODO: اكتب الكود الخاص بك أدناه
# 1. استخدم الفهرسة المنطقية لاستخراج العناصر الأصغر من lower_bound وقم بطباعتها
# 2. استخدم الفهرسة المنطقية لاستخراج العناصر الأكبر من upper_bound وقم بطباعتها
# 3. استخدم الفهرسة المنطقية مع عامل الربط & لاستخراج العناصر ضمن النطاق (بما في ذلك الحدود) وقم بطباعتها
quiz iconاختبر نفسك

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

جميع دروس Fundamentals