0Pricing
R Academy · درس

seq() للمتتاليات المخصّصة

تحكّم في حجم الخطوة والطول والاتجاه باستخدام seq().

seq() للمتتاليات المخصّصة درس مجاني في R Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في R Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة R Academy 4 دروس في المجموع.

مقدمة إلى seq()

تُعد seq() مولّد المتتاليات المرن في R. فبينما ينشئ : نطاقات أعداد صحيحة بخطوة مقدارها 1، تتيح لك seq() التحكم في البداية والنهاية وحجم الخطوة والطول الإجمالي لأي متتالية رقمية.

# Basic seq() usage
basic <- seq(1, 10)
cat('seq(1, 10):', basic, '
')

# With step size
by_two <- seq(0, 20, by = 2)
cat('seq(0, 20, by=2):', by_two, '
')

‏seq(from, to, by) — خطوة مخصصة

تحدد الوسيطة by حجم الخطوة بين القيم المتتالية. ويمكن أن تكون أي عدد موجب أو سالب، بما في ذلك الأعداد العشرية. ويفيد ذلك في إنشاء قيم متباعدة بانتظام عند فواصل غير صحيحة.

# Decimal step
celsius <- seq(0, 100, by = 12.5)
cat('Every 12.5 degrees:', celsius, '
')

# Step of 0.1
fine_scale <- seq(1.0, 1.5, by = 0.1)
cat('Fine scale:', fine_scale, '
')

# Negative step (descending)
countdown <- seq(10, 0, by = -2)
cat('Countdown by 2:', countdown, '
')

‏seq(from, to, length.out) — عدد ثابت

عندما تعرف عدد القيم التي تريدها بدلًا من حجم الخطوة، استخدم length.out. وسيحسب R الخطوة تلقائيًا لتقسيم الفاصل بالتساوي.

# 5 evenly spaced points between 0 and 1
unit_interval <- seq(0, 1, length.out = 5)
cat('5 points in [0,1]:', unit_interval, '
')

# 7 breakpoints for a histogram
breakpoints <- seq(0, 100, length.out = 7)
cat('Histogram breaks:', breakpoints, '
')

# Step is automatically calculated
step <- (100 - 0) / (7 - 1)
cat('Step size:', step, '
')

‏seq(along.with = x) — المطابقة مع متجه

تنشئ seq(along.with = x) متتالية الأعداد الصحيحة 1:length(x)، وهي مطابقة لـ seq_along(x). وتفيد عندما تريد إقران متتالية فهارس بمتجه موجود.

rainfall <- c(55.2, 62.1, 48.7, 71.3, 38.9, 90.4, 45.0)

# Generate matching index sequence
idx <- seq(along.with = rainfall)
cat('Indices:', idx, '
')
cat('Rainfall:', rainfall, '
')

# Use to find position of max
cat('Position of max rainfall:', which.max(rainfall), '
')
cat('Max rainfall:', max(rainfall), 'mm
')

‏seq_len(n) — من 1 إلى n بأمان

تعادل seq_len(n) ‏seq(1, n) أو 1:n، لكنها تتعامل بصورة صحيحة مع الحالة الخاصة التي تكون فيها n = 0، إذ تعيد متجه أعداد صحيحة فارغًا بدلًا من c(1, 0).

# Normal use
cat('seq_len(5):', seq_len(5), '
')

# Edge case: n = 0
cat('1:0       :', 1:0, '
')       # produces 1 0 (WRONG)
cat('seq_len(0):', seq_len(0), '
') # produces integer(0) (CORRECT)

# In practice: safe loop
my_data <- c()  # intentionally empty
for (i in seq_len(length(my_data))) {
  cat('Processing item', i, '
')
}
cat('Loop completed without error
')

الخطوات السالبة باستخدام seq()

يؤدي تعيين قيمة سالبة لـ by إلى إنشاء تسلسل تنازلي. يجب أن تكون قيمة from أكبر من to عند استخدام خطوة سالبة، وإلا فستُصدر R تحذيرًا.

# Countdown from 100 to 0
countdown_100 <- seq(100, 0, by = -10)
cat('Countdown:', countdown_100, '
')

# Temperature drop simulation
start_temp <- 30.0
end_temp <- 15.0
hourly_temps <- seq(start_temp, end_temp, by = -1.5)
cat('Hourly cooling:', hourly_temps, '
')

تسلسلات الفاصلة العائمة

انتبه عند استخدام خطوات الفاصلة العائمة: فقد تؤدي أخطاء التقريب الصغيرة إلى تضمين القيمة الأخيرة أو استبعادها بشكل غير متوقع. يؤدي استخدام length.out بدلًا من by إلى تجنب هذه المشكلة.

# Floating point step: may include or exclude endpoint
seq_by <- seq(0, 1, by = 0.1)
cat('By 0.1 (', length(seq_by), 'values):', seq_by, '
')

# length.out: always exactly n values
seq_lo <- seq(0, 1, length.out = 11)
cat('length.out=11:', seq_lo, '
')

# Check: are they the same?
cat('Identical?', identical(seq_by, seq_lo), '
')

استخدام seq() لمحاور الرسوم البيانية

من الاستخدامات الشائعة لـ seq() توليد قيم للدوال الرياضية أو علامات تدريج المحاور. فهي تتيح أخذ عينات من دالة ضمن فترة زمنية على فواصل منتظمة.

# Sample a sine wave
x_vals <- seq(0, 2 * pi, length.out = 13)
y_vals <- round(sin(x_vals), 3)
cat('x values (radians):', round(x_vals, 2), '
')
cat('sin(x) values:      ', y_vals, '
')

# Find the approximate peak
cat('Peak near x =', round(x_vals[which.max(y_vals)], 3), '
')

مقارنة seq() مع :

استخدم : عندما تريد أعدادًا صحيحة بخطوة مقدارها 1. استخدم seq() عندما تحتاج إلى خطوات عشرية، أو عدد محدد من القيم، أو إلى مطابقة طول متجه آخر. وقد تعطي الدالتان نتائج متطابقة في النطاقات الصحيحة البسيطة.

# These produce the same integer sequence
a <- 1:5
b <- seq(1, 5)
c_seq <- seq(1, 5, by = 1)
d <- seq(1, 5, length.out = 5)

cat('1:5            :', a, '
')
cat('seq(1,5)       :', b, '
')
cat('seq(1,5,by=1)  :', c_seq, '
')
cat('seq(1,5,lo=5)  :', d, '
')
cat('All identical? :', identical(a, d), '
')

تطبيق عملي: توليد نقاط زمنية

تُعد seq() مثالية لإنشاء محاور زمنية في تحليل البيانات، مثل توليد فواصل شهرية أو ربع سنوية أو سنوية للعمل مع السلاسل الزمنية.

# Monthly data points (as numeric month indices)
months_idx <- seq(1, 12, by = 1)
month_names <- month.abb  # built-in R constant
cat('Month indices:', months_idx, '
')
cat('Month names  :', month_names, '
')

# Quarterly: every 3 months
quarters <- seq(1, 12, by = 3)
cat('Quarter starts:', quarters, '
')
cat('Quarter names :', month_names[quarters], '
')

ملخص معاملات seq()

إليك مرجعًا سريعًا لمعاملات seq():

  • from — قيمة البداية (الافتراضية 1)
  • to — قيمة النهاية (الافتراضية 1)
  • by — حجم الخطوة بين القيم
  • length.out — العدد الدقيق للقيم المراد توليدها
  • along.with — مطابقة طول متجه آخر

ينبغي توفير أحد by أو length.out فقط.

# Five different forms of seq()
cat('seq(5)               :', seq(5), '
')
cat('seq(2, 10)           :', seq(2, 10), '
')
cat('seq(0, 1, by=0.25)   :', seq(0, 1, by = 0.25), '
')
cat('seq(0, 1, length.out=5):', seq(0, 1, length.out = 5), '
')
cat('seq(along.with=1:4)  :', seq(along.with = 1:4), '
')

اختبار سريع

كم قيمة ينتجها seq(0, 1, length.out = 6)؟

مراجعة: استخدام seq() لإنشاء تسلسلات مخصصة

أحسنتم! إليكم أهم ما تعلمتموه في هذا الدرس:

  • seq(from, to, by) — إنشاء تسلسل بحجم خطوة ثابت
  • seq(from, to, length.out = n) — إنشاء n قيم متباعدة بالتساوي تمامًا
  • seq(along.with = x) — توليد فهارس تطابق المتجه x
  • seq_len(n) — نسخة آمنة من 1:n (تتعامل مع n=0)
  • فضّلوا length.out على by في تسلسلات الفاصلة العائمة لتجنب مشكلات التقريب
  • استخدموا seq() عندما لا يكون : كافيًا (للخطوات غير الصحيحة أو العدد الثابت)
# Final demo: all seq() forms
cat('Even 0-10:    ', seq(0, 10, by = 2), '
')
cat('5 in [0,1]:   ', seq(0, 1, length.out = 5), '
')
cat('Match 3-elem: ', seq(along.with = c('a', 'b', 'c')), '
')
cat('Safe 1:0:     ', seq_len(0), '(empty)
')

الأسئلة الشائعة

هل درس «seq() للمتتاليات المخصّصة» مجاني؟

نعم — نص درس «seq() للمتتاليات المخصّصة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة R Academy، انتقل إلى CoddyKit PRO. تتضمن دورة R Academy 4 دروس في المجموع.

ماذا ستتعلم في «seq() للمتتاليات المخصّصة»؟

تحكّم في حجم الخطوة والطول والاتجاه باستخدام seq(). تتمرن على R Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ R Academy؟

لا تُشترط خبرة سابقة. R Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «seq() للمتتاليات المخصّصة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس R Academy هذا؟

نعم. كل درس في R Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. عامل النقطتين لنطاقات الأعداد الصحيحة
  2. seq() للمتتاليات المخصّصة
  3. rep() لتكرار القيم
  4. المتجهات والمتتاليات المسمّاة
← العودة إلى R Academy