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

تقطيع وفهرسة المتجهات

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

لقد تعلمت كيفية الوصول إلى العناصر الفردية والتكرار عبر المتجهات (vectors). الآن دعنا نستكشف كيفية استخراج عناصر متعددة في وقت واحد باستخدام تقنية التقطيع (slicing). تتيح لك هذه التقنية الحصول على مجموعة فرعية من المتجه في عملية واحدة.

لاستخراج عناصر متعددة، مرر متجهاً من الفهارس داخل الأقواس المربعة:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[c(1, 3, 5)])

المخرجات:

[1] 10 30 50

يمكنك أيضاً استخدام عامل النقطتين الرأسيتين لتحديد نطاق من العناصر المتتالية:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[2:4])

المخرجات:

[1] 20 30 40

تعد الفهارس السالبة قوية في لغة R. فهي تستبعد العناصر بدلاً من تحديدها:

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

المخرجات:

[1] 10 30 40 50

يمكنك استبعاد عناصر متعددة عن طريق تمرير متجه من الفهارس السالبة:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[-c(1, 5)])

المخرجات:

[1] 20 30 40

تذكر: لا يمكنك خلط الفهارس الموجبة والسالبة في نفس التحديد. سيقوم R بإظهار خطأ إذا حاولت numbers[c(1, -2)].

challenge icon

التحدي

سهل

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

  1. قائمة من الأرقام المفصولة بفاصلة (على سبيل المثال، 100,200,300,400,500,600,700)
  2. فهرسان مفصولان بفاصلة يمثلان نطاقاً للاستبعاد (على سبيل المثال، 2,5)

قم بإجراء العمليات التالية:

  1. إنشاء متجه عددي من الأرقام المفصولة بفاصلة
  2. طباعة العناصر في المواقع 1 و 3 و 5 باستخدام متجه من الفهارس
  3. طباعة العناصر من الموقع 2 إلى الموقع 4 باستخدام عامل النقطتين الرأسيتين (colon operator)
  4. طباعة المتجه مع استبعاد العنصر الموجود في الفهرس الأول المعطى (باستخدام الفهرسة السالبة)
  5. طباعة المتجه مع استبعاد العناصر من الفهرس الأول إلى الفهرس الثاني (باستخدام الفهرسة السالبة مع نطاق)

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

10,20,30,40,50,60,70
3,5

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

[1] 10 30 50
[1] 20 30 40
[1] 10 20 40 50 60 70
[1] 10 20 60 70

الشرح:

  • العناصر في المواقع 1، 3، 5 هي: 10، 30، 50
  • العناصر من الموقع 2 إلى 4 هي: 20، 30، 40
  • استبعاد الموقع 3 يعطي: 10، 20، 40، 50، 60، 70
  • استبعاد المواقع من 3 إلى 5 يعطي: 10، 20، 60، 70

جرّب بنفسك

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

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

# تحليل المؤشرين (indices)
indices <- as.numeric(strsplit(indices_input, ",")[[1]])
idx1 <- indices[1]
idx2 <- indices[2]

# TODO: اكتب كودك أدناه
# 1. اطبع العناصر في المواقع 1 و 3 و 5 باستخدام متجه من المؤشرات

# 2. اطبع العناصر من الموقع 2 إلى الموقع 4 باستخدام عامل النقطتين الرأسيتين (colon operator)

# 3. اطبع المتجه مع استبعاد العنصر الموجود في idx1 (الفهرسة السالبة)

# 4. اطبع المتجه مع استبعاد العناصر من idx1 إلى idx2 (الفهرسة السالبة مع نطاق)
quiz iconاختبر نفسك

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

جميع دروس Fundamentals