Menu
CoddyTech
flag Ar iconالعربيةdown icon

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

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

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

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

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. اطبع العناصر في المواضع 1 و3 و5 باستخدام متجه من المؤشرات
  2. اطبع العناصر من الموضع 2 إلى الموضع 4 باستخدام معامل النقطتين
  3. اطبع المتجه مع استبعاد العنصر الموجود عند المؤشر الأول المُعطى (باستخدام الفهرسة السالبة)
  4. اطبع المتجه مع استبعاد العناصر من المؤشر الأول إلى المؤشر الثاني (باستخدام الفهرسة السالبة مع نطاق)

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

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)

# حلل الأرقام المفصولة بفواصل إلى متجه رقمي
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اختبر نفسك

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

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

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