y <- 1:4
mean(y)8 مسار العمل: الحصول على المساعدة
هذا الكتاب ليس جزيرة معزولة؛ فلا يوجد مصدر واحد يتيح لك إتقان لغة R. عندما تبدأ في تطبيق التقنيات الموصوفة في هذا الكتاب على بياناتك الخاصة، ستواجه قريباً أسئلة لا نجيب عليها هنا. يوضح هذا القسم بعض النصائح حول كيفية الحصول على المساعدة ومساعدتك على مواصلة التعلم.
8.1 محرك البحث جوجل هو صديقك
إذا تعثرت في حل مشكلة ما، فابدأ بالبحث في جوجل. عادةً ما يكون إضافة حرف “R” إلى استعلام البحث كافياً لتقييد النتائج وجعلها ذات صلة: وإذا لم يكن البحث مفيداً، فغالباً ما يعني ذلك عدم وجود نتائج محددة متعلقة بـ R لهذه المشكلة. بالإضافة إلى ذلك، فإن إضافة أسماء الحزم مثل “tidyverse” أو “ggplot2” سيساعد في تضييق نطاق النتائج لتصل إلى كود برمجي يبدو مألوفاً لك أيضاً، على سبيل المثال: المقارنة بين البحث عن “how to make a boxplot in R” مقابل “how to make a boxplot in R with ggplot2”. يعد جوجل مفيداً بشكل خاص للتعامل مع رسائل الخطأ (Error messages). إذا ظهرت لك رسالة خطأ وليس لديك أدنى فكرة عما تعنيه، فجرّب البحث عنها في جوجل! فالاحتمال الأكبر هو أن شخصاً آخر قد ارتبك بسببها في الماضي، وستجد مساعدة في مكان ما على الويب. (إذا لم تكن رسالة الخطأ باللغة الإنجليزية، فقم بتشغيل الأمر Sys.setenv(LANGUAGE = "en") وأعد تشغيل الكود؛ حيث أنك ستجد على الأرجح مساعدة أكبر لرسائل الخطأ المكتوبة باللغة الإنجليزية).
وإذا لم يساعدك جوجل، فجرّب موقع Stack Overflow. ابدأ بقضاء وقت قصير في البحث عن إجابة موجودة بالفعل، مع تضمين الرمز [R] لتقييد بحثك في الأسئلة والإجابات التي تستخدم لغة R فقط.
8.2 إنشاء كود برمي نموذجي وقابل لإعادة الإنتاج (Making a reprex)
إذا لم يسفر بحثك في جوجل عن أي شيء مفيد، فمن الأفكار الممتازة جداً إعداد reprex، وهو اختصار لـ (reproducible example) أي مثال نموذجي قابل لإعادة الإنتاج. يسهل الـ reprex الجيد على الآخرين مساعدتك، وغالباً ما ستكتشف المشكلة بنفسك أثناء قيامك بإعداده وبنائه. يتكون إنشاء الـ reprex من جزأين رئيسيين:
-
أولاً: عليك جعل الكود الخاص بك قابلاً لإعادة الإنتاج. وهذا يعني أنه يجب عليك تضمين كل شيء، أي إدراج أي استدعاءات للدالة
library()وإنشاء جميع الكائنات (Objects) اللازمة. وأسهل طريقة للتأكد من قيامك بذلك هي استخدام حزمة reprex. - ثانياً: عليك جعل الكود في حده الأدنى (Minimal). قم بتجريد وحذف كل شيء ليس له علاقة مباشرة بمشكلتك. يتضمن هذا عادةً إنشاء كائن R أصغر وأبسط بكثير من الكائن الذي تواجهه في حياتك الواقعية أو حتى استخدام البيانات المدمجة في البرنامج (Built-in data).
قد يبدو هذا كأنه يتطلب الكثير من العمل! وقد يكون كذلك بالفعل، ولكن له مردود عظيم وفائدة كبرى:
- في 80% من الحالات، يكشف إنشاء reprex ممتاز عن مصدر مشكلتك. ومن المدهش كم أن عملية كتابة مثال مستقل وفي حده الأدنى تتيح لك الإجابة على سؤالك بنفسك.
- وفي الـ 20% المتبقية من الحالات، ستكون قد لخصت جوهر مشكلتك بطريقة يسهل على الآخرين التعامل معها وتجربتها. وهذا يزيد بشكل كبير من فرصك في الحصول على المساعدة!
عند إنشاء reprex يدوياً، من السهل أن تفوتك بعض التفاصيل دون قصد، مما يعني أن كودك لن يعمل على جهاز كمبيوتر شخص آخر. تجنب هذه المشكلة باستخدام حزمة reprex، والتي يتم تثبيتها كجزء من منظومة tidyverse. لنفترض أنك قمت بنسخ هذا الكود إلى الحافظة (Clipboard) الخاصة بك (أو قمت بتحديده إذا كنت تستخدم RStudio Server أو Cloud):
ثم قمت باستدعاء الدالة reprex()، حيث يتم تنسيق المخرجات الافتراضية لتناسب موقع GitHub:
reprex::reprex()ستظهر معاينة HTML منسقة وجميلة في نافذة العرض (Viewer) في RStudio (إذا كنت داخل بيئة RStudio) أو في متصفحك الافتراضي خلاف ذلك. يتم نسخ الـ reprex تلقائياً إلى الحافظة الخاصة بك (على RStudio Server أو Cloud، ستحتاج إلى نسخ هذا بنفسك):
``` r
y <- 1:4
mean(y)
#> [1] 2.5
```
هذا النص منسق بطريقة خاصة تسمى Markdown، والتي يمكن لصقها في مواقع مثل Stack Overflow أو GitHub لتقوم تلك المواقع برندرتها وعرضها تلقائياً لتظهر ككود برمجي. إليك كيف سيبدو نص Markdown هذا عند عرضه ورندرته على موقع GitHub:
y <- 1:4
mean(y)
#> [1] 2.5ويمكن لأي شخص آخر الآن نسخ هذا الكود ولصقه وتشغيله على الفور.
هناك ثلاثة أشياء تحتاج إلى تضمينها لجعل مثالك قابلاً لإعادة الإنتاج: الحزم المطلوبة، والبيانات، والكود البرمجي.
يجب تحميل الحزم في الجزء العلوي من السكربت بحيث يسهل رؤية الحزم التي يحتاجها هذا المثال. هذا وقت جيد للتحقق من أنك تستخدم أحدث إصدار من كل حزمة؛ فقد تكون قد اكتشفت ثغرة أو خطأ برمجياً (Bug) تم إصلاحه منذ أن قمت بتثبيت الحزمة أو تحديثها لآخر مرة. بالنسبة للحزم الموجودة في tidyverse، فإن أسهل طريقة للتحقق هي تشغيل الأمر
tidyverse_update().-
أسهل طريقة لتضمين البيانات هي استخدام الدالة
dput()لإنشاء كود R اللازم لإعادة إنشائها. على سبيل المثال، لإعادة إنشاء مجموعة بياناتmtcarsفي R، اتبع الخطوات التالية:- شغّل الأمر
dput(mtcars)في R. - قم بنسخ المخرجات.
- في الـ reprex الخاص بك، اكتب
mtcars <-ثم قم باللصق. حاول دائماً استخدام أصغر جزء مستقطع (Subset) من بياناتك والذي لا يزال يظهر المشكلة بوضوح.
- شغّل الأمر
-
اقضِ قليلاً من الوقت في التأكد من أن كودك سهل القراءة للآخرين:
تأكد من استخدام المسافات وأن أسماء متغيراتك موجزة ولكنها تحمل دلالة واضحة.
استخدم التعليقات للإشارة إلى مكان المشكلة وتحديدها صراحة.
ابذل قصارى جهدك لإزالة كل ما ليس له علاقة بالمشكلة.
فكلما كان كودك أقصر، كلما كان فهمه أسهل وتصحيحه أيسر.
واختتم عملك بالتحقق من أنك قمت بالفعل بإنشاء مثال قابل لإعادة الإنتاج عن طريق فتح جلسة R جديدة تماماً (Fresh R session) ثم نسخ السكربت الخاص بك ولصقه فيها للتأكد من عمله.
إن إنشاء الـ reprex ليس بالأمر الهين، وسيتطلب منك بعض الممارسة لتتعلم كيفية إنشاء أمثلة ممتازة وفي حدها الأدنى حقاً. ومع ذلك، فإن تعلم كيفية طرح الأسئلة التي تتضمن الكود البرمجي، واستثمار الوقت لجعلها قابلة لإعادة الإنتاج سيعود عليك بنفع مستمر بينما تتعلم وتتقن لغة R.
8.3 الاستثمار في تطوير نفسك
يجب عليك أيضاً قضاء بعض الوقت في إعداد نفسك لحل المشكلات قبل حدوثها. إن استثمار القليل من الوقت في تعلم لغة R يومياً سيعود عليك بنفع جزيل وثمار عظيمة على المدى الطويل. أحد الأساليب هو متابعة ما يقوم به فريق tidyverse على مدونة tidyverse. ولمواكبة مجتمع R على نطاق أوسع، نوصي بقراءة موقع R Weekly؛ فهو جهد مجتمعي متميز لتجميع ومشاركة أكثر الأخبار إثارة للاهتمام في مجتمع R كل أسبوع.
8.4 ملخص
يختتم هذا الفصل جزء “اللعبة كاملة” (Whole Game) من هذا الكتاب. لقد اطلعت الآن على أهم أجزاء عملية علم البيانات: بناء المخططات البيانية (Visualization)، وتحويل البيانات (Transformation)، وترتيبها (Tidying)، واستيرادها (Importing). الآن أصبحت لديك نظرة شاملة وكلية للعملية بأكملها، وسنبدأ في الدخول في تفاصيل الأجزاء الصغيرة بدقة وعمق أكبر.
الجزء القادم من الكتاب، “بناء المخططات البيانية” (Visualize)، يقدم غوصاً أعمق في قواعد وبنية الرسومات وتوليد المخططات البيانية للبيانات باستخدام حزمة ggplot2، ويعرض كيفية استخدام الأدوات التي تعلمتها حتى الآن لإجراء تحليل البيانات الاستكشافي (EDA)، كما يقدم الممارسات الجيدة لإنشاء المخططات والرسومات لغرض التواصل الفعال ونشر النتائج.