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. فهرسان (indices) مفصولان بفاصلة يمثلان نطاقاً للاستبعاد (على سبيل المثال، 2,5)

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

  1. أنشئ متجهاً رقمياً (numeric vector) من الأرقام المفصولة بفاصلة
  2. اطبع العناصر في المواقع 1 و 3 و 5 باستخدام متجه من الفهارس
  3. اطبع العناصر من الموقع 2 إلى الموقع 4 باستخدام عامل النقطتين (colon operator)
  4. اطبع المتجه مع استبعاد العنصر الموجود في الفهرس الأول المعطى (باستخدام الفهرسة السالبة negative indexing)
  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

ورقة مرجعية

لاستخراج عناصر متعددة من متجه (vector)، قم بتمرير متجه من الفهارس (indices) داخل أقواس مربعة:

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

استخدم عامل النقطتين الرأسيتين (colon operator) لتحديد نطاق من العناصر المتتالية:

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

تستبعد الفهارس السالبة العناصر بدلاً من تحديدها:

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

هام: لا يمكنك الجمع بين الفهارس الموجبة والسالبة في نفس عملية التحديد.

جرّب بنفسك

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

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

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

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

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

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

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

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

جميع دروس Fundamentals