تقطيع وفهرسة المتجهات
جزء من قسم الأساسيات في رحلة 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)].
التحدي
سهلستتلقى سطرين من الإدخال:
- قائمة أرقام مفصولة بفواصل (مثل:
100,200,300,400,500,600,700) - مؤشران مفصولان بفاصلة ويمثلان نطاقًا لاستبعاده (مثل:
2,5)
يقرأ الكود الابتدائي الإدخال بالفعل وينشئ المتجه الرقمي. اطبع أربعة أسطر بالضبط، بهذا الترتيب:
- اطبع العناصر في المواضع 1 و3 و5 باستخدام متجه من المؤشرات
- اطبع العناصر من الموضع 2 إلى الموضع 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 (الفهرسة السالبة مع النطاق)يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الثاني
المعاملات المنطقية (AND, OR)المعاملات المنطقية - الجزء الثاني (NOT)مراجعة - المنطق البسيطالمنطق المتجهي - الجزء الأولالمنطق المتجهي - الجزء الثاني7حاسبة تقسيم الفاتورة
رسالة الترحيبالحصول على مدخلات المستخدم13المتجهات المتقدمة
تقطيع وفهرسة المتجهاتالفهرسة المنطقيةالعمليات الحسابية وإعادة تدوير المتجهاتالمعامل %in%2المتغيرات وأنواع البيانات
نوع البيانات الرقمينوع البيانات الصحيحنوع البيانات الحرفينوع البيانات المنطقيالتحقق من أنواع البياناتقواعد التسميةالقيم المفقودة: NAملخص - إنشاء المتغيرات8الحلقات التكرارية
حلقة Forحلقة Whileجملة Breakجملة Next (Continue)مراجعة - المضروب (Factorial)توليد المتتاليات (seq, :)الحلقات المتداخلةمراجعة - الإدخال الديناميكي (Dynamic Input)3المعاملات - الجزء الأول
المعاملات الحسابيةقسمة الأعداد الصحيحة وباقي القسمةمعاملات الإسنادملخص - عمليات رياضية بسيطةمعاملات المقارنة6أساسيات الإدخال والإخراج
طباعة المخرجاتاستخدام Cat للمخرجاتالمخرجات مع المتغيراتقراءة المدخلات باستخدام readline()أساسيات تحويل أنواع البياناتمراجعة - حاسبة العمرمراجعة - صح أم خطأتدرّب بنفسك: مترجم R عبر الإنترنت