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

استخدام ()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.

challenge icon

التحدي

سهل

ستتلقى سطراً واحداً من المدخلات يحتوي على أرقام مفصولة بفاصلة (على سبيل المثال، 10,20,30,40,50).

باستخدام seq_along() للتكرار عبر المتجه (vector) مع الفهارس (indices):

  1. أنشئ متجهاً من المدخلات المفصولة بفاصلة
  2. قم بالمرور عبر المتجه باستخدام seq_along() للحصول على كل من الفهرس والقيمة
  3. لكل عنصر، اطبع الفهرس، والقيمة، والمجموع التراكمي حتى تلك النقطة (مجموع كل العناصر من الموضع 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
quiz iconاختبر نفسك

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

جميع دروس Fundamentals