تعديل القوائم
جزء من قسم 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.
التحدي
سهلستتلقى ثلاثة أسطر من المدخلات:
- ثلاث قيم مفصولة بفاصلة لتهيئة قائمة (على سبيل المثال،
50,hello,TRUE) - فهرس (index) وقيمة جديدة مفصولان بفاصلة للتعديل (على سبيل المثال،
2,goodbye) - فهرس العنصر المراد إزالته (على سبيل المثال،
3)
قم بإجراء العمليات التالية:
- أنشئ قائمة بالقيم الثلاث الأولية (قم بتحويلها إلى الأنواع المناسبة: numeric، character، logical)
- اطبع القائمة الأصلية
- قم بتعديل العنصر عند الفهرس المحدد بالقيمة الجديدة (احتفظ بها كـ character string)
- اطبع القائمة بعد التعديل
- أضف عنصراً رابعاً جديداً إلى القائمة بالقيمة
999 - اطبع القائمة بعد إضافة العنصر الجديد
- قم بإزالة العنصر عند الفهرس المحدد (من المدخل الثالث)
- اطبع القائمة النهائية
على سبيل المثال، إذا كانت المدخلات هي:
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. اطبع القائمة النهائيةيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس 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()أساسيات تحويل أنواع البياناتمراجعة - حاسبة العمرمراجعة - صح أم خطأ