وثائق R
مرجع موجز ومدعّم بأمثلة للغة R. اقرأ المفهوم، شاهد الكود، ثم تدرّب عليه في رحلة Coddy.
البداية
- ما هي لغة R؟ما هي لغة البرمجة R، ومن أين جاءت، وفيم تُستخدم، وكيف تُقارن بـ Python - مع أول تذوق عملي قابل للتشغيل لشيفرة R.
- تثبيت Rكيفية تنزيل R من CRAN وتثبيتها على Windows أو macOS أو Linux، إضافة إلى RStudio - بيئة التطوير التي يستخدمها الجميع تقريبًا لكتابة R.
- تشغيل نص R البرمجيكل طرق تشغيل شيفرة R: الطرفية التفاعلية، وRscript من سطر الأوامر، وsource() من داخل R، وأمرا Run وSource في RStudio.
- بنية Rجوهر بنية R: الإسناد بالرمز <-، والتعبيرات والطباعة التلقائية، واستدعاءات الدوال بوسائط مسماة، وقاعدة أن كل شيء متجه.
- التعليقاتكيف تعمل التعليقات في R: الرمز #، ولماذا لا تملك R تعليقًا متعدد الأسطر حقيقيًا، واختصار RStudio لتعطيل الكتل، وما الذي يقوله التعليق الجيد.
المتغيرات والبيانات
- المتغيراتكيفية إنشاء المتغيرات في R بسهم الإسناد <-، ومتى يلزم الرمز = بدلًا منه، وقواعد التسمية، وكيفية سرد المتغيرات وحذفها عبر ls() وrm().
- أنواع البياناتالأنواع الذرية في R - double وinteger وcharacter وlogical - إضافة إلى الفرق بين typeof() وclass()، وكيفية عمل التحويل والإكراه.
- الأرقامالعمل مع الأرقام في R: النوع numeric مقابل integer، وعائلة التقريب، والدالتان sqrt وlog، ومعامل الباقي %%، والقيم الخاصة Inf وNaN.
- السلاسل النصيةكل ما تحتاجه للنصوص في R: إنشاء السلاسل، والدمج بـ paste وpaste0، والتنسيق بـ sprintf، والبحث بـ gsub وgrepl وstrsplit.
- الإدخال والإخراجكيف تعمل المخرجات في R - الطباعة التلقائية، وprint مقابل cat، وmessage - وكيف تقرأ مدخلات المستخدم عبر readline() وreadLines().
التحكم في التدفق
- المعاملاتكل معامل تحتاجه في R - الحسابية بما فيها %% و%/%، والمقارنات المتجهية، والفرق بين & و&&، والمعامل %in% لاختبار الانتماء.
- الشرط if / elseالمنطق الشرطي في R - صياغة if/else if/else، وفخ الأقواس المعقوفة الذي يعطّل النصوص البرمجية، وifelse() المتجهية للمتجهات الكاملة، وswitch() للاختيارات متعددة المسارات.
- حلقات forكيف تعمل حلقات for في R - التكرار على المتجهات والفهارس، وجمع النتائج دون فخ المتجه المتنامي، وnext وbreak، ومتى يتفوق الاستدعاء المتجهي على الحلقة.
- حلقات whileكيف تعمل حلقات while في R - التكرار بالشرط أولًا، وrepeat مع break بوصفها do-while في R، وnext، والعادات التي تبقيك بعيدًا عن الحلقات اللانهائية.
هياكل البيانات
- المتجهاتالمتجهات هي الوحدة الأساسية في R - حتى العدد المفرد متجه. كيف تنشئها بـ c()، وتفهرسها (بدءًا من 1!)، وترشّحها بأقنعة منطقية، وتجري الحساب على متجهات كاملة دفعة واحدة.
- القوائمالقوائم هي حاوية R التي تقبل كل شيء: أنواع مختلطة، وبنى متداخلة، وإطارات بيانات كاملة. والمهارة الأساسية هي معرفة متى يعيد [ قائمة أصغر ومتى يعيد [[ العنصر نفسه.
- المصفوفاتكيف تبني المصفوفات بـ matrix() وcbind() وrbind()، وتفهرس الصفوف والأعمدة، وتفصل الضرب عنصرًا عنصرًا بالمعامل * عن ضرب المصفوفات الحقيقي بالمعامل %*%.
- العواملالعوامل هي طريقة R في تخزين البيانات الفئوية: شيفرات صحيحة ترتدي تسميات نصية. كيف تنشئها، وترتّبها، وتضبط المستوى المرجعي - وتتفادى فخ تحويل العامل إلى عدد.
- إطارات البياناتإطار البيانات هو جدول R الحسابي: أعمدة مسماة متساوية الطول، لكل منها نوعه. كيف تبني واحدًا، وتقدّر حجمه بـ str() وhead()، وتصل إلى الأعمدة والصفوف والخلايا.
- القيم المفقودة (NA)تعني NA "مجهول" - وهي تنتشر عبر كل حساب تلمسه. كيف تكتشفها بـ is.na()، وتتخطاها بـ na.rm = TRUE، وتحذفها أو تستبدلها عن قصد.
الدوال والحزم
- الدوالكيف تنشئ دالة في R - صياغة function(x) { }، والقيم المعادة، والوسائط الافتراضية والمسماة، والنقاط الثلاث ...، والدوال المجهولة، وكيف يعمل النطاق.
- عائلة applyتشغّل عائلة apply - وهي apply وlapply وsapply وvapply وmapply وtapply - دالةً على كل عنصر في بياناتك. وإليك ما تفعله كل واحدة ومتى تلجأ إليها.
- الأنابيبماذا يعني %>%، وكيف يعمل الأنبوب الأصلي |> في R الأساسية، وقواعد كل منهما ورموزه النائبة، وأيهما تستخدم في الشيفرة الجديدة.
- الحزمكيف تعمل حزم R: التثبيت من CRAN بـ install.packages()، والتحميل بـ library()، والفرق بين require() وlibrary()، والصيغة pkg::fun()، والحزم الجديرة بالمعرفة.
- دليل العملأين تبحث R عن الملفات وكيف تتحكم في ذلك: getwd() وsetwd() وlist.files()، وتنظيف البيئة بـ rm(list = ls())، ولماذا يُعد الحفظ التلقائي لـ .RData فخًا.
معالجة البيانات
- dplyrما هي dplyr، وكيف تثبّتها، وكيف تحوّل أفعالها الستة الأساسية مع الأنبوب شيفرة إطارات البيانات الفوضوية إلى خطوط معالجة مقروءة.
- التصفية والمجموعات الجزئيةكل الطرق للاحتفاظ بالصفوف والأعمدة التي تريدها: الأقنعة المنطقية بالأقواس، والسطر الواحد subset()، و%in%، ومصائد NA، ودالتا filter() وselect() في dplyr.
- إضافة الأعمدة (mutate)كيفية إضافة أعمدة data frame وتحويلها وحذفها: df$new <- ...، وifelse() للأعمدة الشرطية، وtransform()، وmutate() في dplyr مع case_when().
- إعادة تسمية الأعمدةإعادة تسمية أعمدة data frame في R: names() وcolnames()، وإعادة التسمية بالموضع مقابل الاسم، وsetNames()، وrename() في dplyr، وتنظيف الترويسات المستوردة الفوضوية.
- الترتيبكيف يعمل الترتيب فعليًا في R: sort() للمتجهات، ولماذا تحتاج أطر البيانات إلى حيلة الفهارس في order()، والترتيب التنازلي والترتيب بعدة أعمدة، وarrange() في dplyr.
- التجميع والتلخيصكل الطرق لحساب إحصاءات لكل مجموعة في R: العد بـ table()، وtapply() لإحصاء واحد لكل مجموعة، وواجهة الصيغة في aggregate()، وgroup_by() مع summarize() في dplyr.
- الدمج والوصلجمع أطر البيانات عبر مفتاح مشترك: merge() للوصل الداخلي واليساري واليميني والكامل، واختلاف أسماء المفاتيح عبر by.x/by.y، وعائلة الوصل في dplyr، وrbind() لتكديس الصفوف.
- المحورة (إعادة التشكيل)الصيغتان العريضة والطويلة للبيانات وكيفية التحويل بينهما: pivot_longer() وpivot_wider() في tidyr، والاسمان القديمان spread وgather، ودالة reshape() في base R.
الاستيراد والتصدير
- قراءة CSVكيفية استيراد ملفات CSV إلى R باستخدام read.csv(): الوسائط المهمة، ومصيدة دليل العمل التي تسبب معظم حالات الفشل، ومتى تستحق readr::read_csv العناء.
- قراءة Excelلا يستطيع R فتح ملفات .xlsx بمفرده، وحزمة readxl تسد هذه الفجوة. كيفية قراءة الأوراق والنطاقات والترويسات، وكتابة ملفات Excel، وتفادي مصائد الاستيراد الكلاسيكية.
- كتابة CSV وRDSالتصدير من R: write.csv مع row.names = FALSE (دائمًا)، وwrite.table لفواصل أخرى، وsaveRDS للرحلات الكاملة التي لا تفقد أنواع بياناتك.
- التواريخصنف Date في R ما هو إلا عدّاد أيام يرتدي زيًّا. كيفية تحليل السلاسل النصية بـ as.Date، وتنسيق التواريخ للعرض، وطرحها، وبناء متتاليات منها، ومتى تحتاج إلى POSIXct بدلًا منها.
الرسوم البيانية
- الدالة plot()كيف تعمل دالة plot() في R: أنواع الرسم، والعناوين وتسميات المحاور، والألوان، ورموز النقاط (pch)، والتراكب بـ lines() وabline()، ومفاتيح الإيضاح.
- المدرج التكراريكيفية إنشاء مدرج تكراري في R بدالة hist(): اختيار الفواصل، وتنسيق الأعمدة، والتحويل إلى مقياس الكثافة، وتراكب منحنى طبيعي، ونسخة ggplot2.
- مخطط الصندوقكيفية إنشاء مخطط صندوق في R بدالة boxplot(): قراءة الصندوق والشوارب، وواجهة الصيغة لمقارنة المجموعات، والتنسيق، والعثور على الأرقام الكامنة خلفه.
- مخطط الانتشاركيفية إنشاء مخطط انتشار في R: رسم متغيرين بـ plot()، وإضافة خط انحدار بـ abline(lm())، والتنعيم بـ lowess()، وبناء مصفوفة pairs().
- المخطط الشريطيكيفية إنشاء مخطط شريطي في R بدالة barplot(): من متجه مسمّى أو من table()، والأشرطة المجمّعة والمكدّسة من مصفوفة، والتنسيق، وgeom_col مقابل geom_bar.
- ggplot2كيف تعمل ggplot2: النموذج الذهني القائم على البيانات + aes() + geom، والربط مقابل الضبط في السمات الجمالية، وlabs()، وfacet_wrap()، والسمات، وحفظ الرسوم بـ ggsave().
الإحصاء
- الإحصاءات الوصفيةكيفية تلخيص البيانات في R: mean() وmedian() وsd() وvar() وsummary() وquantile()، وما تحسبه كل منها، وتفصيلة n−1 خلف sd()، ولماذا تُعد mode() في R مصيدة.
- الارتباطقِس مدى تحرك متغيرين معًا بـ cor()، واختبر ما إذا كانت العلاقة حقيقية بـ cor.test()، وامسح متغيرات كثيرة دفعة واحدة بمصفوفة ارتباط.
- اختبار tأجرِ اختبارات t أحادية العينة وثنائية العينة والمزدوجة بدالة t.test()، ثم الجزء الأهم فعلًا: قراءة كل سطر من المخرجات، من t وdf إلى قيمة p وفترة الثقة.
- تحليل التباينقارن متوسطات ثلاث مجموعات أو أكثر بدالة aov()، واقرأ جدول تحليل التباين خلية خلية، واكتشف أي المجموعات تختلف فعلًا بدالة TukeyHSD().
- الانحدار الخطيعاير انحدارًا بدالة lm()، واقرأ كل كتلة من summary() من المعاملات والأخطاء المعيارية وقيم p ومعامل التحديد وإحصاء F، ثم تنبأ بدالة predict().
- الانحدار اللوجستينمذج المخرجات الثنائية بدالة glm(family = binomial): اقرأ الملخص، وحوّل معاملات اللوغاريتم الأرجحي إلى نسب أرجحية بـ exp()، واحصل على الاحتمالات المتنبأ بها بالطريقة الصحيحة.
- فترات الثقةاحصل على فترات ثقة للمتوسطات والنسب ومعاملات النماذج عبر t.test() وprop.test() وconfint()، مع بيان ما تعنيه عبارة "ثقة 95%" فعلًا وكيف يحدد حجم العينة اتساع الفترة.
- الأعداد العشوائيةولّد بيانات عشوائية بدوال rnorm() وrunif() وrbinom() وsample()، واجعلها قابلة للتكرار بدالة set.seed()، وفك شفرة نظام التسمية d/p/q/r للتوزيعات في R.