R Academy · درس

rep() لتكرار القيم

كرّر القيم والمتجهات باستخدام rep() ووسيطَي times وeach.

الدرس 3 من 413 خطوة

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

مقدمة إلى rep()

ترمز rep() إلى replicate. وهي تكرر القيم أو المتجهات عددًا محددًا من المرات. وتُعد من أكثر الأدوات فائدة لإنشاء بيانات اختبار منظمة، ومجموعات بيانات متوازنة، وملء المتجهات بقيم افتراضية.

# Repeat a single value
zeros <- rep(0, times = 5)
cat('Five zeros:', zeros, '
')

# Repeat a string
status <- rep('active', times = 4)
cat('Status:', status, '
')

rep(x, times) — تكرار المتجه بأكمله

عندما يكون x متجهًا ويكون times عددًا صحيحًا مفردًا، تكرر rep() المتجه بأكمله ذلك العدد من المرات. ويكون طول الناتج length(x) * times.

# Repeat a vector 3 times
weekend <- c('Saturday', 'Sunday')
four_weekends <- rep(weekend, times = 4)
cat('4 weekends:', four_weekends, '
')

# Repeat numeric vector
pattern <- c(1, 2, 3)
cat('Pattern x3:', rep(pattern, times = 3), '
')

rep(x, each) — تكرار كل عنصر

يكرر المعامل each كل عنصر على حدة قبل الانتقال إلى العنصر التالي. وهذا هو الفرق الأساسي عن times: إذ يكرر each العناصر في مواضعها.

groups <- c('A', 'B', 'C')

# times: repeats whole vector
cat('times=3:', rep(groups, times = 3), '
')
# A B C A B C A B C

# each: repeats each element before next
cat('each=3 :', rep(groups, each = 3), '
')
# A A A B B B C C C

rep(x, times = c(...)) — تكرارات متغيرة

عندما يكون times متجهًا بطول يساوي طول x، يُكرر كل عنصر من x العدد المقابل له من المرات. ويوفر ذلك تحكمًا دقيقًا في التكرار.

# Different number of repeats per element
fruits <- c('apple', 'banana', 'cherry')
counts <- c(3, 1, 2)

fruit_basket <- rep(fruits, times = counts)
cat('Fruit basket:', fruit_basket, '
')
# apple apple apple banana cherry cherry

# Useful for creating category labels
cat('Length:', length(fruit_basket), '
')

rep_len() — التكرار إلى طول ثابت

تكرر rep_len(x, length.out) المتجه x حتى يصل الناتج إلى length.out عنصرًا بالضبط. ويكون التكرار دوريًا، أي يعيد الانتقال إلى بداية المتجه عند الحاجة.

# Cycle through seasons to fill 12 months
seasons <- c('Spring', 'Summer', 'Autumn', 'Winter')
year_seasons <- rep_len(seasons, length.out = 12)
cat('12 months by season:', year_seasons, '
')

# Cycle through 1, 2, 3 for 10 items
rotation <- rep_len(1:3, length.out = 10)
cat('Rotation:', rotation, '
')

دمج times وeach

يمكنكم استخدام times وeach معًا لإنشاء أنماط تكرار أكثر تعقيدًا. تطبق R المعامل each أولًا (لتوسيع كل عنصر)، ثم تكرر المتجه الناتج times من المرات.

# each=2 then times=3
vals <- c(1, 2)
result <- rep(vals, each = 2, times = 3)
cat('each=2, times=3:', result, '
')
# 1 1 2 2  repeated 3 times: 1 1 2 2 1 1 2 2 1 1 2 2

cat('Length:', length(result), '
')

إنشاء تسميات متوازنة للمجموعات

من الاستخدامات التقليدية لـ rep() إنشاء تسميات متوازنة للمجموعات في التجارب، حيث تريدون عددًا متساويًا من المشاهدات في كل مجموعة.

# 5 subjects per treatment group
treatments <- c('Control', 'LowDose', 'HighDose')
n_per_group <- 5

group_labels <- rep(treatments, each = n_per_group)
cat('Group labels:', group_labels, '
')
cat('Total subjects:', length(group_labels), '
')

# Count per group
for (g in treatments) {
  cat(g, ':', sum(group_labels == g), '
')
}

تكرار القيم المنطقية

تعمل rep() مع أي نوع من البيانات، بما في ذلك القيم المنطقية. ويفيد ذلك في إنشاء الأقنعة أو العلامات أو الأنماط المتناوبة TRUE/FALSE.

# Alternating TRUE/FALSE pattern
alternate <- rep(c(TRUE, FALSE), times = 5)
cat('Alternating mask:', alternate, '
')

# Apply mask to select every other element
data_vals <- 10:19
cat('Every other value:', data_vals[alternate], '
')

# Create a block pattern: 3 TRUE then 3 FALSE
block <- rep(c(TRUE, FALSE), each = 3)
cat('Block pattern:', block, '
')

استخدام rep() لملء المصفوفات

يمكنكم استخدام rep() لملء المصفوفات سريعًا ببيانات ذات نمط معين. وبما أن matrix() تقبل متجهًا كمدخل، فإن دمجها مع rep() يجعل إنشاء المصفوفات النمطية سهلًا.

# Fill a 3x4 matrix with a repeating pattern
pattern <- rep(c(1, 0), times = 6)
checker <- matrix(pattern, nrow = 3, ncol = 4)
cat('Checkerboard-like matrix:
')
print(checker)

# Fill diagonal-like with rep
fill <- rep(1:4, each = 3)
cat('Repeated fill:', fill, '
')

توسيع جدول ملخص

من الاستخدامات العملية لـ rep() مع times المتغير تحويل جدول تكرارات مرة أخرى إلى متجه بيانات خام. فإذا عرفتم عدد مرات ظهور كل قيمة، تعيد rep() بناء المشاهدات.

# Summary: grade frequencies
grades <- c('A', 'B', 'C', 'D')
frequencies <- c(5, 12, 8, 3)

# Reconstruct raw grade vector
raw_grades <- rep(grades, times = frequencies)
cat('Raw grades (', length(raw_grades), 'students):', raw_grades, '
')

# Verify frequency table
cat('Freq table:
')
print(table(raw_grades))

ملخص rep()

إليكم مرجعًا سريعًا لـ rep():

  • rep(x, times = n) — تكرار x بأكمله n من المرات
  • rep(x, each = n) — تكرار كل عنصر n من المرات
  • rep(x, times = c(...)) — تكرارات متغيرة لكل عنصر
  • rep_len(x, n) — تكرار x دوريًا للوصول إلى n عناصر بالضبط
  • تعمل مع أي نوع: رقمي، ومحرفي، ومنطقي، وعاملي
x <- c(10, 20, 30)
cat('times=2  :', rep(x, times = 2), '
')
cat('each=2   :', rep(x, each = 2), '
')
cat('var times:', rep(x, times = c(1, 2, 3)), '
')
cat('rep_len  :', rep_len(x, 7), '
')

اختبار سريع

ما الناتج الذي تنتجه rep(c(1, 2), each = 3)؟

مراجعة: استخدام rep() لتكرار القيم

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

  • rep(x, times) تكرر المتجه بأكمله، بينما rep(x, each) تكرر كل عنصر على حدة
  • يؤدي تمرير متجه إلى times إلى تحديد أعداد تكرار متغيرة لكل عنصر
  • تكرر rep_len(x, n) قيمة x دوريًا حتى إنتاج n عناصر بالضبط
  • الاستخدامات الشائعة: تسميات المجموعات المتوازنة، والأقنعة، وتوسيع جداول التكرارات، والمصفوفات النمطية
  • تعمل بالطريقة نفسها مع أنواع البيانات الرقمية والمحرفية والمنطقية
# Create a balanced experiment design
treatments <- c('Placebo', 'Drug_A', 'Drug_B')
subjects_per <- 4

design <- rep(treatments, each = subjects_per)
cat('Experiment design:
')
cat(design, '
')
cat('Total N:', length(design), '
')
البدء مجانًا

تعلم R مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
43
الدروس
159

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

هل درس «rep() لتكرار القيم» مجاني؟

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

ماذا ستتعلم في «rep() لتكرار القيم»؟

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

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

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

كم من الوقت يستغرق درس «rep() لتكرار القيم»؟

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

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

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

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

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