تعديل القوائم
جزء من قسم 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 لإزالة العناصر.
جرّب بنفسك
# قراءة المدخلات
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()أساسيات تحويل أنواع البياناتمراجعة - حاسبة العمرمراجعة - صح أم خطأ