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

تعديل القوائم

جزء من قسم Fundamentals في رحلة R على Coddy — الدرس 73 من 78.

الآن بعد أن عرفت كيفية إنشاء القوائم والوصول إلى عناصرها، دعنا نتعلم كيفية تعديلها. يمكنك تغيير العناصر الموجودة، أو إضافة عناصر جديدة، أو إزالة العناصر تماماً.

لتغيير عنصر موجود، استخدم الأقواس المزدوجة مع عملية التعيين:

my_list <- list(10, "hello", TRUE)
my_list[[2]] <- "world"
print(my_list)

المخرجات:

[[1]]
[1] 10

[[2]]
[1] "world"

[[3]]
[1] TRUE

لإضافة عنصر جديد، ما عليك سوى التعيين إلى فهرس غير موجود بعد:

my_list <- list(10, "hello")
my_list[[3]] <- FALSE
print(my_list)

المخرجات:

[[1]]
[1] 10

[[2]]
[1] "hello"

[[3]]
[1] FALSE

لإزالة عنصر، قم بتعيين NULL له:

my_list <- list(10, "hello", TRUE)
my_list[[2]] <- NULL
print(my_list)

المخرجات:

[[1]]
[1] 10

[[2]]
[1] TRUE

لاحظ أنه بعد إزالة العنصر الثاني، تنتقل العناصر المتبقية لملء الفجوة. العنصر الذي كان في الموضع 3 أصبح الآن في الموضع 2.

challenge icon

التحدي

سهل

ستتلقى ثلاثة أسطر من المدخلات:

  1. ثلاث قيم مفصولة بفاصلة لتهيئة قائمة (على سبيل المثال، 50,hello,TRUE)
  2. فهرس (index) وقيمة جديدة مفصولان بفاصلة للتعديل (على سبيل المثال، 2,goodbye)
  3. فهرس العنصر المراد إزالته (على سبيل المثال، 3)

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

  1. أنشئ قائمة بالقيم الثلاث الأولية (قم بتحويلها إلى الأنواع المناسبة: numeric، character، logical)
  2. اطبع القائمة الأصلية
  3. قم بتعديل العنصر عند الفهرس المحدد بالقيمة الجديدة (احتفظ بها كـ character string)
  4. اطبع القائمة بعد التعديل
  5. أضف عنصراً رابعاً جديداً إلى القائمة بالقيمة 999
  6. اطبع القائمة بعد إضافة العنصر الجديد
  7. قم بإزالة العنصر عند الفهرس المحدد (من المدخل الثالث)
  8. اطبع القائمة النهائية

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

100,world,FALSE
1,updated
2

يجب أن تكون المخرجات:

[[1]]
[1] 100

[[2]]
[1] "world"

[[3]]
[1] FALSE

[[1]]
[1] "updated"

[[2]]
[1] "world"

[[3]]
[1] FALSE

[[1]]
[1] "updated"

[[2]]
[1] "world"

[[3]]
[1] FALSE

[[4]]
[1] 999

[[1]]
[1] "updated"

[[2]]
[1] FALSE

[[3]]
[1] 999

التفسير:

  • القائمة الأصلية: 100, "world", FALSE
  • بعد تعديل الفهرس 1: "updated", "world", FALSE
  • بعد إضافة العنصر الرابع: "updated", "world", FALSE, 999
  • بعد إزالة الفهرس 2: "updated", FALSE, 999 (تتم إزاحة العناصر المتبقية)

تذكر استخدام الأقواس المزدوجة [[ ]] للتعديلات وتعيين NULL لإزالة العناصر.

ورقة مرجعية

لتعديل عنصر موجود في قائمة، استخدم الأقواس المزدوجة مع التعيين:

my_list <- list(10, "hello", TRUE)
my_list[[2]] <- "world"

لإضافة عنصر جديد إلى قائمة، قم بالتعيين إلى فهرس غير موجود بعد:

my_list <- list(10, "hello")
my_list[[3]] <- FALSE

لإزالة عنصر من قائمة، قم بتعيين NULL له:

my_list <- list(10, "hello", TRUE)
my_list[[2]] <- NULL

عند إزالة عنصر، تنزاح العناصر المتبقية لملء الفجوة. العنصر الذي كان في الموضع 3 يصبح في الموضع 2.

جرّب بنفسك

# قراءة المدخلات
con <- file("stdin", "r")
initial_values <- suppressWarnings(readLines(con, n = 1))  # ثلاث قيم مفصولة بفاصلة
modify_input <- suppressWarnings(readLines(con, n = 1))    # الفهرس والقيمة الجديدة
remove_index <- suppressWarnings(readLines(con, n = 1))    # الفهرس المراد إزالته
close(con)

# تحليل القيم الأولية
values <- strsplit(initial_values, ",")[[1]]
val1 <- as.numeric(values[1])
val2 <- values[2]
val3 <- as.logical(values[3])

# تحليل مدخلات التعديل
mod_parts <- strsplit(modify_input, ",")[[1]]
mod_index <- as.numeric(mod_parts[1])
mod_value <- mod_parts[2]

# تحليل فهرس الإزالة
rem_index <- as.numeric(remove_index)

# TODO: اكتب كودك أدناه
# 1. أنشئ قائمة بالقيم الثلاث الأولية (val1, val2, val3)
# 2. اطبع القائمة الأصلية
# 3. قم بتعديل العنصر الموجود في mod_index بالقيمة mod_value
# 4. اطبع القائمة بعد التعديل
# 5. أضف عنصراً رابعاً جديداً بقيمة 999
# 6. اطبع القائمة بعد الإضافة
# 7. قم بإزالة العنصر الموجود في rem_index (استخدم NULL)
# 8. اطبع القائمة النهائية
quiz iconاختبر نفسك

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

جميع دروس Fundamentals