استخدام ()seq_along
جزء من قسم Fundamentals في رحلة R على Coddy — الدرس 64 من 78.
أحياناً قد تحتاج إلى كل من قيمة العنصر وموقعه في المتجه (vector). وبينما يعد التكرار مباشرة عبر العناصر أمراً منظماً، إلا أنه لا يمنحك الوصول إلى الفهرس (index). تحل الدالة seq_along() هذه المشكلة عن طريق إنشاء تسلسل من الفهارس لأي متجه.
ترجع الدالة seq_along() سلسلة من 1 إلى طول المتجه:
fruits <- c("apple", "banana", "cherry")
print(seq_along(fruits))المخرجات:
[1] 1 2 3من خلال التكرار عبر هذه الفهارس، يمكنك الوصول إلى كل من الموضع والقيمة:
fruits <- c("apple", "banana", "cherry")
for (i in seq_along(fruits)) {
cat(i, ":", fruits[i], "\n")
}المخرجات:
1 : apple
2 : banana
3 : cherryهذا النهج مفيد بشكل خاص عندما تحتاج إلى تعديل العناصر في مواضع محددة أو مقارنة العناصر مع جيرانها. استخدام seq_along() أكثر أماناً من 1:length(vec) لأنه يتعامل مع المتجهات الفارغة بشكل صحيح، حيث يعيد تسلسلاً فارغاً بدلاً من 1:0.
التحدي
سهلستتلقى سطراً واحداً من المدخلات يحتوي على أرقام مفصولة بفاصلة (على سبيل المثال، 10,20,30,40,50).
باستخدام seq_along() للتكرار عبر المتجه (vector) مع الفهارس (indices):
- أنشئ متجهاً من المدخلات المفصولة بفاصلة
- قم بالمرور عبر المتجه باستخدام
seq_along()للحصول على كل من الفهرس والقيمة - لكل عنصر، اطبع الفهرس، والقيمة، والمجموع التراكمي حتى تلك النقطة (مجموع كل العناصر من الموضع 1 إلى الموضع الحالي)
استخدم cat() بالتنسيق التالي: Position X: VALUE (Running total: TOTAL) متبوعاً بسطر جديد.
على سبيل المثال، إذا كانت المدخلات هي:
5,10,15,20يجب أن تكون المخرجات:
Position 1: 5 (Running total: 5)
Position 2: 10 (Running total: 15)
Position 3: 15 (Running total: 30)
Position 4: 20 (Running total: 50)الشرح: في الموضع 1، القيمة هي 5 والمجموع التراكمي هو 5. في الموضع 2، القيمة هي 10 والمجموع التراكمي هو 5+10=15. في الموضع 3، القيمة هي 15 والمجموع التراكمي هو 5+10+15=30، وهكذا.
تلميح: استخدم sum(vector[1:i]) لحساب المجموع التراكمي حتى الموضع i.
ورقة مرجعية
تقوم الدالة seq_along() بإنشاء تسلسل من الفهارس من 1 إلى طول المتجه:
fruits <- c("apple", "banana", "cherry")
print(seq_along(fruits))
# المخرجات: [1] 1 2 3استخدم seq_along() في حلقة (loop) للوصول إلى كل من الفهرس والقيمة:
fruits <- c("apple", "banana", "cherry")
for (i in seq_along(fruits)) {
cat(i, ":", fruits[i], "\n")
}
# المخرجات:
# 1 : apple
# 2 : banana
# 3 : cherryاستخدام seq_along() أكثر أماناً من 1:length(vec) لأنه يتعامل مع المتجهات الفارغة بشكل صحيح، حيث يعيد تسلسلاً فارغاً بدلاً من 1:0.
جرّب بنفسك
# قراءة المدخلات
con <- file("stdin", "r")
input_line <- suppressWarnings(readLines(con, n = 1))
close(con)
# تحويل السلسلة النصية المفصولة بفاصلة إلى متجه عددي
numbers <- as.numeric(strsplit(input_line, ",")[[1]])
# TODO: اكتب الكود الخاص بك أدناه
# استخدم seq_along() للتكرار عبر المتجه
# لكل موضع، اطبع الفهرس، القيمة، والمجموع التراكمي
# استخدم cat() بالتنسيق التالي: Position X: VALUE (Running total: TOTAL)\nيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Fundamentals
4المعاملات - الجزء الثاني
المعاملات المنطقية (AND, OR)المعاملات المنطقية - الجزء الثاني (NOT)مراجعة - المنطق البسيطالمنطق المتجهي - الجزء الأولالمنطق المتجهي - الجزء الثاني2المتغيرات وأنواع البيانات
نوع البيانات الرقمينوع البيانات الصحيحنوع البيانات الحرفينوع البيانات المنطقيالتحقق من أنواع البياناتقواعد التسميةالقيم المفقودة: NAملخص - إنشاء المتغيرات8الحلقات التكرارية
حلقة Forحلقة Whileجملة Breakجملة Next (Continue)مراجعة - المضروب (Factorial)توليد المتتاليات (seq, :)الحلقات المتداخلةمراجعة - الإدخال الديناميكي (Dynamic Input)3المعاملات - الجزء الأول
المعاملات الحسابيةقسمة الأعداد الصحيحة وباقي القسمةمعاملات الإسنادملخص - عمليات رياضية بسيطةمعاملات المقارنة6أساسيات الإدخال والإخراج
طباعة المخرجاتاستخدام Cat للمخرجاتالمخرجات مع المتغيراتقراءة المدخلات باستخدام readline()أساسيات تحويل أنواع البياناتمراجعة - حاسبة العمرمراجعة - صح أم خطأ12التكرار عبر التسلسلات
التكرار عبر عناصر الـ Vectorاستخدام ()seq_alongالتكرار عبر المحارف (strsplit)دوال معالجة السلاسل النصية