مدخل إلى البرمجة باستخدام لغة R

لغة R

هذه المقدمة إلى لغة R مستمدة من مجموعة أصلية من الملاحظات التي تصف البيئات S و S-Plus والتي كتبها بيل فينابلز وديفيد م. سميث في عام 1990 عندما كانا في جامعة أديلايد. لقد أجرينا عددًا من التغييرات الصغيرة لتعكس الاختلافات بين برامج R و S، وقمنا بتوسيع بعض المواد.

سيبدأ معظم المبتدئين في R بالجلسة التمهيدية في الملحق الموجود ضمن هذا الدليل. وهذا من شأنه أن يعطي بعض الإلمام بأسلوب جلسات R والأهم من ذلك بعض التعليقات الفورية حول ما يحدث أو يجري بالفعل.

سيأتي العديد من المستخدمين إلى R بشكل أساسي لاستخدام مرافقها الرسومية، والتي يمكن قراءتها في أي وقت تقريبًا ولا تحتاج إلى الانتظار حتى يتم استيعاب جميع الأقسام السابقة.

بيئة R

لغة R عبارة عن مجموعة متكاملة من مرافق البرامج لمعالجة البيانات والحساب والعرض الرسومي. من بين أمور أخرى لديها:

  • وسيلة فعالة لمعالجة البيانات وتخزينها،
  • مجموعة من العوامل للحسابات على المصفوفات،
  • مجموعة كبيرة ومتماسكة ومتكاملة من الأدوات الوسيطة لتحليل البيانات،
  • مرافق رسومية لتحليل البيانات وعرضها إما مباشرة على الكمبيوتر أو على نسخة ورقية،
  • لغة برمجة مطورة جيدًا وبسيطة وفعالة (تسمى “S”) والتي تتضمن الجمل الشرطية والحلقات والوظائف التكرارية التي يحددها المستخدم ومرافق الإدخال والإخراج. (في الواقع، فإن معظم الوظائف التي يوفرها النظام مكتوبة بلغة S).

يُقصد بمصطلح “البيئة” توصيفها على أنها نظام مخطط ومتماسك بالكامل، بدلاً من تراكم تدريجي لأدوات محددة وغير مرنة للغاية، كما هو الحال في كثير من الأحيان مع برامج تحليل البيانات الأخرى.

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

البرامج والوثائق ذات الصلة بلغة R

يمكن اعتبار لغة R بمثابة تنفيذ للغة S التي تم تطويرها في Bell Laboratories بواسطة Rick Becker و John Chambers و Allan Wilks، وتشكل أيضًا أساس أنظمة S-Plus.

يتميز تطور لغة S بأربعة كتب كتبها جون تشامبرز والمؤلفون المشاركون. بالنسبة للغة R، فإن المرجع الأساسي هو The New S Language: A Programming Environment for Data Analysis and Graphic by Richard A. Becker و John M. Chambers و Allan R. Wilks.

تمت تغطية الميزات الجديدة لإصدار 1991 من S في نماذج إحصائية في S تم تحريرها بواسطة John M.Chambers و Trevor J. Hastie. تستند الأساليب والفئات الرسمية لحزمة الأساليب على تلك الموصوفة في البرمجة باستخدام البيانات بواسطة John M. انظر الملحق F للحصول على مراجع دقيقة.

يوجد الآن عدد من الكتب التي تصف كيفية استخدام R لتحليل البيانات والإحصاءات، ويمكن عادةً استخدام وثائق S / S-Plus مع R، مع مراعاة الاختلافات بين تطبيقات S. انظر قسم “ما هي الوثائق الموجودة لـ R؟” في الأسئلة الشائعة حول النظام الإحصائي R.

لغة R والإحصاءات

لم تذكر المقدمة عن بيئة R الإحصائيات، ومع ذلك يستخدم العديد من الأشخاص لغة R كنظام إحصائي. نحن نفضل أن نفكر في ذلك من بيئة تم فيها تنفيذ العديد من التقنيات الإحصائية الكلاسيكية والحديثة. تم تضمين عدد قليل منها في بيئة R الأساسية، ولكن يتم توفير العديد منها كحزم. هناك حوالي 25 حزمة مزودة بحزم R (تسمى الحزم “القياسية” و”الموصى بها”) والعديد منها متاح من خلال مواقع الإنترنت وأماكن أخرى. مزيد من التفاصيل حول الحزم سوف نتطرق إليها لاحقًا.

معظم الإحصائيات الكلاسيكية وأحدث المنهجيات والأساليب متاحة للاستخدام مع R، ولكن قد يحتاج المستخدمون إلى الاستعداد للقيام ببعض العمل للعثور عليها.

هناك فرق مهم في الفلسفة بين لغة S (ومن ثم R) والأنظمة الإحصائية الرئيسية الأخرى. في S، يتم إجراء التحليل الإحصائي عادةً كسلسلة من الخطوات، مع تخزين النتائج الوسيطة في الكائنات. وفي حين أن في برامج التحليل الإحصائي SAS و SPSS يعطيان ناتجًا غزيرًا من تحليل الانحدار أو التمييز، فإن R ستعطي الحد الأدنى من المخرجات وتخزن النتائج في كائن مناسب للاستعلام اللاحق من خلال وظائف R أخرى.

لغة R ونظام النوافذ

الطريقة الأكثر ملاءمة لاستخدام لغة R هي في محطة عمل رسومية تشغل نظام نوافذ.

هذا الدليل موجه للمستخدمين الذين لديهم هذه التسهيلات. على وجه الخصوص، سنشير أحيانًا إلى استخدام R في نظام نافذة X على الرغم من أن الجزء الأكبر مما يقال ينطبق بشكل عام على أي عملية تنفيذ لبيئة R.

سيجد معظم المستخدمين أنه من الضروري التفاعل مباشرة مع نظام التشغيل على أجهزة الكمبيوتر الخاصة بهم من وقت لآخر. في هذا الدليل، نناقش بشكل أساسي التفاعل مع نظام التشغيل على أجهزة UNIX. إذا كنت تقوم بتشغيل R ضمن Windows أو macOS، فستحتاج إلى إجراء بعض التعديلات الصغيرة.

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

استخدام لغة R بشكل تفاعلي

عند استخدام برنامج R، فإنه يصدر مطالبة عندما يتوقع أوامر إدخال. الموجه الافتراضي هو “>”، والذي قد يكون في نظام التشغيل UNIX هو نفسه موجه shell، وبالتالي قد يبدو أنه لا شيء يحدث. ومع ذلك، كما سنرى، من السهل التغيير إلى موجه R مختلف إذا كنت ترغب في ذلك. سنفترض أن موجه الهيكل Shell Prompt لبيئة UNIX هو “$”.

عند استخدام R ضمن UNIX، يكون الإجراء المقترح للمناسبة الأولى كما يلي:

1. قم بإنشاء دليل فرعي منفصل، على سبيل المثال work، للاحتفاظ بملفات البيانات التي ستستخدم R لهذه المسألة. سيكون هذا هو الدليل الحالي كلما استخدمت R لهذه المسألة بالذات:

$ mkdir work

$ cd

2. ابدأ برنامج R باستخدام الأمر:

$ R

3. في هذه المرحلة، قد يتم إصدار أوامر R (انظر لاحقًا).

4. لإنهاء برنامج R يكون الأمر كما يلي:

> q()

في هذه المرحلة، سيتم سؤالك عما إذا كنت تريد حفظ البيانات من جلسة R. في بعض الأنظمة، سيظهر هذا مربع حوار، وفي أنظمة أخرى ستتلقى مطالبة نصية يمكنك الرد عليها بنعم أو لا أو إلغاء (سيفي اختصار بحرف واحد) لحفظ البيانات قبل الإنهاء أو الخروج دون حفظ أو العودة إلى جلسة R. ستتوفر البيانات المحفوظة في جلسات R المستقبلية.

مزيد من جلسات R بسيطة:

1. اجعل work الدليل الحالي وابدأ البرنامج كما كان من قبل:

$ cd work

$ R

2. استخدم برنامج R، الذي ينتهي بالأمر q () في نهاية الجلسة.

لاستخدام R ضمن Windows، يكون الإجراء الذي يجب اتباعه هو نفسه في الأساس. قم بإنشاء مجلد كدليل work، وقم بتعيين ذلك في حقل Start In في الاختصار R. ثم قم بتشغيل R بالنقر المزدوج على الرمز.

جلسة تمهيدية

يُنصح القراء الذين يرغبون في التعود على R على الكمبيوتر قبل المتابعة بالعمل خلال الجلسة التمهيدية الواردة في الملحق.

الحصول على المساعدة في الوظائف والميزات

R لديه مرفق مساعدة يحمل في ثناياه عوامل مماثلة مرفق man في UNIX. للحصول على مزيد من المعلومات حول أي وظيفة محددة مسماة، على سبيل المثال solve، الأمر هو:

> help(solve)

البديل هو:

> ?solve

بالنسبة للميزة المحددة بأحرف خاصة، يجب وضع الوسيطة بين علامتي اقتباس مزدوجتين أو مفردة، مما يجعلها “سلسلة أحرف” أو character string: وهذا ضروري أيضًا لبضع كلمات ذات معنى نحوي بما في ذلك if و for و function:

> help("[[")

يمكن استخدام أيٍّ من شكلي علامات الاقتباس للتغلب على الآخر، كما هو الحال في السلسلة “It’s important”. اتفاقيتنا هي استخدام علامات الاقتباس المزدوجة للتفضيل.

في معظم عمليات تثبيت R، تتوفر المساعدة بتنسيق HTML عن طريق تشغيل الأمر:

> help.start()

والتي ستطلق متصفح ويب يسمح بتصفح صفحات المساعدة بالارتباطات التشعبية. في UNIX، يتم إرسال طلبات المساعدة اللاحقة إلى نظام التعليمات المستند إلى HTML. يعتبر ارتباط “محرك البحث والكلمات الرئيسية” الموجود في الصفحة التي تم تحميلها بواسطة help.start() مفيدًا بشكل خاص لأنه يحتوي على قائمة مفاهيم عالية المستوى تبحث من خلال الوظائف المتاحة. يمكن أن تكون طريقة رائعة للحصول على الاتجاهات بسرعة والفهم الموسع لما يمكن أن تقدمه R.

يسمح الأمر help.search؟ (بدلاً من ذلك) بالبحث عن المساعدة بطرق مختلفة. على سبيل المثال:

> ??solve

للحصول على التفاصيل والمزيد من الأمثلة، جرب:

> ?help.search

يمكن عادةً تشغيل الأمثلة الموجودة على موضوع التعليمات بواسطة:

> example(topic)

تحتوي إصدارات Windows من لغة R على أنظمة مساعدة اختيارية أخرى.

لمزيد من التفاصيل استخدم:

> ?help

أوامر لغة R وحساسية حالة الأحرف

من الناحية الفنية، تعد لغة R لغة تعبيرية ذات بناء جملة بسيط للغاية. إنها حساسة لحالة الأحرف مثلها مثل معظم الحزم القائمة على UNIX، لذا فإن A و a رمزان مختلفان وسيشيران إلى متغيرات مختلفة.

تعتمد مجموعة الرموز التي يمكن استخدامها في أسماء R على نظام التشغيل والدولة التي يتم تشغيل R ضمنها (تقنيًا على الإعدادات المحلية المستخدمة). يُسمح عادةً بجميع الرموز الأبجدية الرقمية (وفي بعض البلدان، يتضمن هذا أحرفًا معلّمة) بالإضافة إلى “.” و “_”، مع القيد الذي يجب أن يبدأ الاسم بـ “.” أو حرف، وإذا كان يبدأ بـ “.” يجب ألا يكون الحرف الثاني رقم. الأسماء غير محدودة بشكل فعال من حيث الطول.

تتكون الأوامر الأولية من التعبيرات expressions أو التعيينات assignments. إذا تم إعطاء تعبير كأمر، يتم تقييمه وطباعته (ما لم يكن غير مرئي على وجه التحديد)، وتفقد القيمة.

يقوم التعيين أيضًا بتقييم تعبير ما وتمرير القيمة إلى متغير ولكن لا تتم طباعة النتيجة تلقائيًا.

يتم فصل الأوامر إما بفاصلة منقوطة (“؛”) أو سطر جديد. يمكن تجميع الأوامر الأولية معًا في تعبير مركب واحد بواسطة الأقواس (“{“و ‘}’). يمكن وضع التعليقات تقريبًا في أي مكان، بدءًا من علامة التجزئة (“#”)، كل شيء حتى نهاية السطر هو تعليق.

إذا لم يكتمل الأمر في نهاية السطر، فسوف يعطي R موجهًا مختلفًا افتراضيًا هو علامة الجمع:

+

وذلك في الأسطر الثانية واللاحقة، ويستمر في قراءة المدخلات حتى يكتمل الأمر نحويًا. قد يتم تغيير هذه المطالبة من قبل المستخدم. سنحذف بشكل عام موجه الاستمرارية ونشير إلى الاستمرار عن طريق مسافة بادئة بسيطة.

تم تحديد سطور الأوامر التي يتم إدخالها في وحدة التحكم بحوالي 4095 بايت (وليس أحرفًا).

استدعاء وتصحيح الأوامر السابقة

في ظل العديد من إصدارات UNIX وWindows، يوفر R آلية لاستدعاء وإعادة تنفيذ الأوامر السابقة. يمكن استخدام مفاتيح الأسهم العمودية على لوحة المفاتيح للتمرير للأمام وللخلف خلال محفوظات الأوامر. بمجرد وضع الأمر بهذه الطريقة، يمكن نقل المؤشر داخل الأمر باستخدام مفاتيح الأسهم الأفقية، ويمكن إزالة الأحرف باستخدام مفتاح DEL أو إضافتها باستخدام المفاتيح الأخرى. يتم توفير مزيد من التفاصيل لاحقًا: راجع الملحق (محرر سطر الأوامر).

إمكانيات الاستدعاء والتحرير في نظام UNIX قابلة للتخصيص بدرجة كبيرة. يمكنك معرفة كيفية القيام بذلك من خلال قراءة الإدخال اليدوي لمكتبة readline.

بدلاً من ذلك، يوفر محرر نصوص Emacs آليات دعم أكثر عمومية (عبر ESS ، Emacs Speaks Statistics) للعمل بشكل تفاعلي مع R. انظر قسم “R and Emacs” في الأسئلة الشائعة حول النظام الإحصائي R.

تنفيذ الأوامر من ملف أو تحويل الإخراج إليه

إذا تم تخزين الأوامر في ملف خارجي، وليكن commands.R، في الدليل الحالي أو الفّعال work، يمكن تنفيذها في أي وقت في جلسة R باستخدام الأمر التالي:

> source("commands.R")

بالنسبة لمصدر Windows Source، يتوفر أيضًا في قائمة “ملف” File. الدالة:

> sink("record.lis")

ستحول كل الإخراج اللاحق من وحدة التحكم إلى ملف خارجي record.lis.

والأمر:

> sink()

يعيده إلى وحدة التحكم مرة أخرى.

ديمومة البيانات وإزالة الكائنات

تُعرف الكيانات التي ينشئها R ويتعامل معها بالأشياء objects. قد تكون هذه متغيرات أو مصفوفات أرقام أو سلاسل أحرف أو وظائف أو هياكل أكثر عمومية مبنية من هذه المكونات.

أثناء جلسة R، يتم إنشاء الكائنات وتخزينها بالاسم (نناقش هذه العملية في القسم التالي).

الأمر R:

> objects()

(بدلاً من ذلك، يمكن استخدام ls ()) لعرض أسماء (معظم) الكائنات المخزنة حاليًا داخل لغة R. تسمى مجموعة الكائنات المخزنة حاليًا مساحة العمل أو workspace.

لإزالة الكائنات، تتوفر الوظيفة rm:

> rm(x, y, z, ink, junk, temp, foo, bar)

يمكن تخزين جميع الكائنات التي تم إنشاؤها أثناء جلسة R بشكل دائم في ملف لاستخدامها في جلسات R المستقبلية. في نهاية كل جلسة R، يتم منحك الفرصة لحفظ جميع الكائنات المتاحة حاليًا. إذا أشرت إلى أنك تريد القيام بذلك، تتم كتابة الكائنات في ملف يسمى .RData، قي الدليل الحالي، ويتم حفظ أسطر الأوامر المستخدمة في الجلسة في ملف يسمى .Rhistory.

عندما يبدأ R في وقت لاحق من نفس الدليل فإنه يعيد تحميل مساحة العمل من هذا الملف. في نفس الوقت يتم إعادة تحميل محفوظات الأوامر المرتبطة.

يوصى باستخدام أدلة عمل منفصلة للتحليلات التي يتم إجراؤها باستخدام R. ومن الشائع جدًا إنشاء كائنات تحمل أسماء x أو y أثناء التحليل.

غالبًا ما تكون أسماء مثل هذه ذات مغزى في سياق تحليل واحد، ولكن قد يكون من الصعب تحديد ما قد تكون عليه عندما يتم إجراء العديد من التحليلات في نفس الدليل.

المصدر

  • المرجع الأساسي للبرمجة باستخدام لغة R، ترجمة وإعداد: د. م. مصطفى عبيد، مركز البحوث والدراسات متعدد التخصصات.
  • المدخل إلى لغة R، الموقع الرسمي لمشروع لغة R.
مدخل إلى البرمجة باستخدام لغة R
مدخل إلى البرمجة باستخدام لغة R
error:
Scroll to Top