التكرار عبر عناصر الـ Vector
جزء من قسم Fundamentals في رحلة R على Coddy — الدرس 63 من 78.
بينما تُعد العمليات الموجهة (vectorized operations) في لغة R قوية، فأنت تحتاج أحياناً إلى معالجة كل عنصر على حدة باستخدام منطق مخصص. تسمح لك حلقة for بالتكرار عبر عناصر المتجه واحداً تلو الآخر.
أبسط طريقة للتكرار عبر متجه (vector) هي التكرار مباشرة على عناصره:
fruits <- c("apple", "banana", "cherry")
for (fruit in fruits) {
print(fruit)
}المخرجات:
[1] "apple"
[1] "banana"
[1] "cherry"في كل تكرار، يأخذ متغير الحلقة fruit قيمة العنصر التالي في المتجه (vector). هذا النهج نظيف وسهل القراءة عندما تحتاج فقط إلى القيم نفسها.
يمكنك الجمع بين التكرار والمنطق الشرطي لمعالجة العناصر بشكل انتقائي:
numbers <- c(3, 8, 2, 10, 5)
for (num in numbers) {
if (num > 5) {
print(num)
}
}المخرجات:
[1] 8
[1] 10هذا النمط مفيد عندما تحتاج إلى تطبيق عمليات مختلفة بناءً على قيمة كل عنصر، وهو أمر لا تستطيع العمليات الموجهة (vectorized operations) وحدها التعامل معه دائمًا.
التحدي
سهلسوف تتلقى سطرين من المدخلات:
- قائمة من الأرقام مفصولة بفاصلة (على سبيل المثال،
12,5,18,3,25,8,14) - قيمة العتبة (على سبيل المثال،
10)
باستخدام حلقة for للتكرار عبر عناصر المتجه (vector):
- قم بإنشاء متجه من الأرقام المفصولة بفاصلة
- قم بالمرور عبر كل عنصر في المتجه
- لكل عنصر يكون أكبر من أو يساوي العتبة، قم بطباعة ذلك العنصر باستخدام
print()
على سبيل المثال، إذا كانت المدخلات هي:
4,15,8,22,6,19,11
10يجب أن تكون المخرجات:
[1] 15
[1] 22
[1] 19
[1] 11الشرح: تقوم الحلقة بفحص كل عنصر مقابل العتبة (10). العناصر 15، 22، 19، و 11 جميعها أكبر من أو تساوي 10، لذا يتم طباعتها. أما العناصر 4، 8، و 6 فيتم تخطيها.
ورقة مرجعية
تسمح لك حلقة for بالمرور عبر عناصر المتجه (vector) واحداً تلو الآخر وتطبيق منطق مخصص على كل عنصر.
الصيغة الأساسية للتكرار عبر متجه (vector):
fruits <- c("apple", "banana", "cherry")
for (fruit in fruits) {
print(fruit)
}في كل تكرار، يأخذ متغير الحلقة قيمة العنصر التالي في المتجه.
دمج الحلقات التكرارية مع المنطق الشرطي لمعالجة العناصر بشكل انتقائي:
numbers <- c(3, 8, 2, 10, 5)
for (num in numbers) {
if (num > 5) {
print(num)
}
}هذا النمط مفيد عندما تحتاج إلى تطبيق عمليات مختلفة بناءً على قيمة كل عنصر.
جرّب بنفسك
# قراءة المدخلات
con <- file("stdin", "r")
numbers_input <- suppressWarnings(readLines(con, n = 1))
threshold <- as.numeric(suppressWarnings(readLines(con, n = 1)))
close(con)
# تحويل السلسلة النصية المفصولة بفاصلة إلى متجه عددي
numbers <- as.numeric(unlist(strsplit(numbers_input, ",")))
# TODO: اكتب الكود الخاص بك أدناه
# استخدم حلقة for للتكرار عبر متجه الأرقام
# لكل عنصر >= threshold، قم بطباعته باستخدام ()printيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس 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)دوال معالجة السلاسل النصية