موقع د. عزيز الجعيد
  • الرئـيـسـية

  • الأقسام

    • علم البيانات والذكاء الإصطناعي

    • ذكاء الأعمال

    • لغة البرمجة بايثون

    • مقالات متنوعـة

    • لغة البرمجة آر R

    • الإحــــــصــــــاء

    • البيانات المفتوحة

  • عـنــي

  • تواصل معي

علم البيانات والذكاء الاصطناعي

  • الرئـيـسـية

  • الأقسام

    • علم البيانات والذكاء الإصطناعي

    • ذكاء الأعمال

    • لغة البرمجة بايثون

    • مقالات متنوعـة

    • لغة البرمجة آر R

    • الإحــــــصــــــاء

    • البيانات المفتوحة

  • عـنــي

  • تواصل معي

حلقات التكرار (loops) في لغة البرمجة آر R

28/04/2020 | لغة البرمجة آر R | 3 تعليقات

عند برمجة كثيراً من المشاكل الإحصائية بإستخدام لغة البرمجة آر R، نحتاج في كثير من الأحيان لبناء حلقات التكرار (loops). عليه سوف نناقش مجموعة الأوامر والطرق لبناء حلقات التكرار في لغة البرمجة آر. لتوضيح ذلك، نفرض اننا نريد حساب قيمة المعادلة: $y=x_i+x_{i+1}$  لجميع قيم $i\leq3$ حيث أن $x$  عبارة عن متجه (vector) يحوي القيم من 1 الى 4.

اولاً: باستخدام  الأمر while، ويكون ذلك من خلال الكود التالي:

In:
x=seq(1:4)
i=1
y=c()
while (i<=3){
  y[i]=x[i]+x[i+1]
  i=i+1
}
y
Out:
[1] 3 5 7

ثانياً: باستخدام  الأمر for، ويكون ذلك من خلال الكود التالي:

In:
y=c()
for (i in 1:3){
  y[i]=x[i]+x[i+1]
}
y
Out:
[1] 3 5 7

ويمكن كذلك استخدام حلقات التكرار بشكل متداخل. لتوضيح ذلك نفرض ان لدينا المعادلة التالية: $y=(x_i+x_{i+1})^\frac{1}{m}$ ونرغب في حسابها بالنسبة لـ $x=1,2,3$ و $m=1,2$، ويمكن ذلك من خلال استخدام الكود التالي:

In:
x=seq(1:4)
m=c(1,2)
out=matrix(nrow=3,ncol=2)
for (j in 1:2){
  for (i in 1:3){
    out[i,j]=(x[i]+x[i+1])^(1/m[j])
  }}
out
Out:
     [,1]     [,2]
[1,]    3 1.732051
[2,]    5 2.236068
[3,]    7 2.645751

يمكن استخدام حلقة التكرار for  مع جميع انواع المتجهات مثل التاريخ والنصوص وغيرها، مثلاً:

In:
Names=c("Aziz", "Mohammed", "Ali")
for (i in Names){
  print(i)
}
Out:
[1] "Aziz"
[1] "Mohammed"
[1] "Ali"

كذلك يمكن استخدامها لتكرار عمليات برمجية على عدد من الملفات في مجلد معين، فمثلا اذا كان المجلد myfolder يحوي عدد من الملفات A, B, C  فيمكن استخدام الكود التالي لعمل تكرار على هذه الملفات:

In:
setwd("myfolder")
mydata=data.frame()
fileNames = Sys.glob("*.txt")
for (f in fileNames){
myfile=read.table(f,sep=",",header = T)
mydata=rbind(myfile,mydata)
}
print(mydata)
Out:
      Name Age
1     Sami  39
2      Ali  41
3 Mohammed  34

حيث يتم استبدال myfolder بدليل العمل الى المجلد الذي يحوي الملفات، وكذلك txt بأمتداد الملفات.

ملاحظة.
يمكن استخدام الأوامر التالية:

1. نستخدم الأمر next لتجاوز التكرار الحالي من الحلقة، فمثلاً لتجاوز التكرار عندما تكون قيمة x سالبة نستخدم:

In:
x=c(4,-6,9)
for (i in x){
if (i<0){next}
out=sqrt(i)
print(out)
}
Out:
[1] 2
[1] 3

2. نستخدم الأمر break لأنهاء الحلقة الحالية، مثلاً لأنها الحلقة عندما يكون قيمة x  سالبة نستخدم:

In:
x=c(4,-6,9)
for (i in x){
  if (i<0){break}
  out=sqrt(i)
  print(out)
}
Out:
[1] 2
جميع الحقوق الفكرية لهذا المقال محفوظة © موقع د. عزيز، يمنع إعادة نشره في موقع آخر

مقالات ذات صلة:

  • برنامج آر R

    البرنامج الإحصائي آر R هو واحد من أشهر البرامج الإحصائية. هذا البرنامج يعتمد على لغة البرمجة R والتي قام بتطويرها كلاً... برنامج آر R
    اقرأ المزيد
  • آر استوديو (RStudio)

    آر استوديو هو بيئة تشغيل للبرنامج الإحصائي آر R يحوي مجموعة من النوافد والأدوات المصممة بشكل رائع والتي تساعد على... آر استوديو (RStudio)
    اقرأ المزيد
  • مقدمة في لغة البرمجة آر R

    هذا الموضوع سوف نوضح بالتفصيل بعض الأساسيات في لغة البرمجة آر R والتي تمثل الخطوه الأولى في فهم هذه اللغة الهامة ويمكن... مقدمة في لغة البرمجة آر R
    اقرأ المزيد

التعليقات 3

  1. SHAHRAZAD بتاريخ أكتوبر 22, 2017 - 9:56 ص

    وفقكم الله ..نتمني ان نري مزيدا” من المنشورات حول تطبيق برنامج R

  2. لطفي بتاريخ نوفمبر 4, 2017 - 9:23 م

    مشكورين

  3. حنان بتاريخ أغسطس 18, 2018 - 9:21 م

    بورك فيك وبجهودك دكتور عزيز

شارك بتعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *


The reCAPTCHA verification period has expired. Please reload the page.

د. عزيز عوض الله الجعيد
دكتوراه في الإحصاء، عالم بيانات، مبرمج، مهتم في التحليل المتقدم، والبيانات الضخمة والذكاء الاصطناعي، لمزيد من المعلومات أضغط هنا

  • YouTube
جميع الحقوق محفوظة © موقع د. عزيز