الوصول إلى عناصر القائمة
جزء من قسم Fundamentals في رحلة R على Coddy — الدرس 72 من 78.
تستخدم القوائم بناءً مختلفاً للوصول إلى العناصر مقارنة بالمتجهات. يكمن الفرق الرئيسي بين الأقواس المفردة [ ] والأقواس المزدوجة [[ ]].
تستخرج الأقواس المزدوجة العنصر الفعلي من القائمة:
my_list <- list(42, "hello", TRUE)
print(my_list[[1]])المخرجات:
[1] 42تُعيد الأقواس المفردة قائمة فرعية تحتوي على العنصر، وليس العنصر نفسه:
my_list <- list(42, "hello", TRUE)
print(my_list[1])المخرجات:
[[1]]
[1] 42هذا التمييز مهم عندما تريد العمل مع القيمة الفعلية. إذا كان عنصر القائمة عبارة عن متجه (vector)، فإن الأقواس المزدوجة تتيح لك الوصول إليه مباشرة ثم استخدام فهرسة المتجهات:
my_list <- list(c(10, 20, 30), "text")
print(my_list[[1]][2])المخرجات:
[1] 20هنا، my_list[[1]] يسترجع المتجه، و [2] يصل إلى عنصره الثاني. تذكر: استخدم [[ ]] عندما تحتاج إلى المحتوى الفعلي، و [ ] عندما تريد قائمة أصغر.
التحدي
سهلسوف تتلقى سطرين من المدخلات:
- ثلاث قيم مفصولة بفاصلة من أنواع مختلفة (على سبيل المثال،
100,hello,TRUE) - قائمة أرقام مفصولة بفاصلة تمثل متجهاً (vector) ليتم تخزينه كعنصر رابع (على سبيل المثال،
5,10,15,20)
قم بإجراء العمليات التالية:
- أنشئ قائمة (list) تحتوي على أربعة عناصر: القيمة الرقمية، النص، القيمة المنطقية، ومتجه الأرقام
- استخدم الأقواس المربعة المزدوجة لاستخراج وطباعة العنصر الثاني (القيمة النصية)
- استخدم الأقواس المربعة المفردة لاستخراج العنصر الثالث وطباعة النتيجة (لاحظ الفرق في تنسيق المخرجات)
- قم بالوصول إلى المتجه المخزن في العنصر الرابع باستخدام الأقواس المربعة المزدوجة، ثم استخرج واطبع قيمته الثالثة باستخدام فهرسة المتجهات
- اطبع مجموع كل الأرقام في العنصر الرابع (قم بالوصول إلى المتجه باستخدام الأقواس المربعة المزدوجة واستخدم
sum())
على سبيل المثال، إذا كانت المدخلات هي:
42,world,FALSE
8,16,24,32,40يجب أن تكون المخرجات:
[1] "world"
[[1]]
[1] FALSE
[1] 24
[1] 120الشرح:
my_list[[2]]يستخرج القيمة النصية الفعلية: "world"my_list[3]يعيد قائمة فرعية تحتوي على FALSE (لاحظ[[1]]في المخرجات)my_list[[4]][3]يصل إلى المتجه، ثم يحصل على عنصره الثالث: 24sum(my_list[[4]])يحسب 8+16+24+32+40 = 120
ورقة مرجعية
تستخدم القوائم صيغ أقواس مختلفة للوصول إلى العناصر:
الأقواس المزدوجة [[ ]] تستخرج العنصر الفعلي:
my_list <- list(42, "hello", TRUE)
print(my_list[[1]]) # المخرجات: [1] 42الأقواس المفردة [ ] تعيد قائمة فرعية تحتوي على العنصر:
my_list <- list(42, "hello", TRUE)
print(my_list[1]) # المخرجات: [[1]] [1] 42الوصول إلى العناصر المتداخلة: استخدم الأقواس المزدوجة لاستخراج متجه من قائمة، ثم استخدم فهرسة المتجهات:
my_list <- list(c(10, 20, 30), "text")
print(my_list[[1]][2]) # المخرجات: [1] 20استخدم [[ ]] عندما تحتاج إلى المحتوى الفعلي، و [ ] عندما تريد قائمة أصغر.
جرّب بنفسك
# قراءة المدخلات
con <- file("stdin", "r")
input1 <- suppressWarnings(readLines(con, n = 1)) # السطر الأول: ثلاث قيم مفصولة بفاصلة
input2 <- suppressWarnings(readLines(con, n = 1)) # السطر الثاني: أرقام مفصولة بفاصلة للمتجه
close(con)
# تحليل سطر الإدخال الأول إلى قيم منفصلة
values <- strsplit(input1, ",")[[1]]
numeric_val <- as.numeric(values[1])
text_val <- values[2]
logical_val <- as.logical(values[3])
# تحليل سطر الإدخال الثاني إلى متجه عددي
vector_val <- as.numeric(strsplit(input2, ",")[[1]])
# TODO: اكتب الكود الخاص بك أدناه
# 1. قم بإنشاء قائمة تحتوي على أربعة عناصر: numeric_val و text_val و logical_val و vector_val
# 2. استخدم الأقواس المزدوجة [[ ]] لاستخراج وطباعة العنصر الثاني
# 3. استخدم الأقواس المفردة [ ] لاستخراج العنصر الثالث وطباعته
# 4. قم بالوصول إلى العنصر الرابع باستخدام الأقواس المزدوجة، ثم استخرج قيمته الثالثة
# 5. اطبع مجموع كل الأرقام في العنصر الرابعيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Fundamentals
4المعاملات - الجزء الثاني
المعاملات المنطقية (AND, OR)المعاملات المنطقية - الجزء الثاني (NOT)مراجعة - المنطق البسيطالمنطق المتجهي - الجزء الأولالمنطق المتجهي - الجزء الثاني2المتغيرات وأنواع البيانات
نوع البيانات الرقمينوع البيانات الصحيحنوع البيانات الحرفينوع البيانات المنطقيالتحقق من أنواع البياناتقواعد التسميةالقيم المفقودة: NAملخص - إنشاء المتغيرات8الحلقات التكرارية
حلقة Forحلقة Whileجملة Breakجملة Next (Continue)مراجعة - المضروب (Factorial)توليد المتتاليات (seq, :)الحلقات المتداخلةمراجعة - الإدخال الديناميكي (Dynamic Input)11المتجهات
إنشاء المتجهات باستخدام c()الوصول إلى عناصر المتجهتعديل المتجهاتالعمليات على المتجهاتمراجعة - متجه الأسعارمراجعة - المتجه المعكوسالمتجهات المسماة14القوائم في R
إنشاء القوائمالوصول إلى عناصر القائمةتعديل القوائمالقوائم المُسماةمراجعة - قائمة المنتجات3المعاملات - الجزء الأول
المعاملات الحسابيةقسمة الأعداد الصحيحة وباقي القسمةمعاملات الإسنادملخص - عمليات رياضية بسيطةمعاملات المقارنة6أساسيات الإدخال والإخراج
طباعة المخرجاتاستخدام Cat للمخرجاتالمخرجات مع المتغيراتقراءة المدخلات باستخدام readline()أساسيات تحويل أنواع البياناتمراجعة - حاسبة العمرمراجعة - صح أم خطأ