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

الوصول إلى عناصر القائمة

جزء من قسم 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] يصل إلى عنصره الثاني. تذكر: استخدم [[ ]] عندما تحتاج إلى المحتوى الفعلي، و [ ] عندما تريد قائمة أصغر.

challenge icon

التحدي

سهل

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

  1. ثلاث قيم مفصولة بفاصلة من أنواع مختلفة (على سبيل المثال، 100,hello,TRUE)
  2. قائمة أرقام مفصولة بفاصلة تمثل متجهاً (vector) ليتم تخزينه كعنصر رابع (على سبيل المثال، 5,10,15,20)

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

  1. أنشئ قائمة (list) تحتوي على أربعة عناصر: القيمة الرقمية، النص، القيمة المنطقية، ومتجه الأرقام
  2. استخدم الأقواس المربعة المزدوجة لاستخراج وطباعة العنصر الثاني (القيمة النصية)
  3. استخدم الأقواس المربعة المفردة لاستخراج العنصر الثالث وطباعة النتيجة (لاحظ الفرق في تنسيق المخرجات)
  4. قم بالوصول إلى المتجه المخزن في العنصر الرابع باستخدام الأقواس المربعة المزدوجة، ثم استخرج واطبع قيمته الثالثة باستخدام فهرسة المتجهات
  5. اطبع مجموع كل الأرقام في العنصر الرابع (قم بالوصول إلى المتجه باستخدام الأقواس المربعة المزدوجة واستخدم 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] يصل إلى المتجه، ثم يحصل على عنصره الثالث: 24
  • sum(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. اطبع مجموع كل الأرقام في العنصر الرابع
quiz iconاختبر نفسك

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

جميع دروس Fundamentals