ورقة R المرجعية
آخر تحديث
Hello World والإسناد
عامل الإسناد الاصطلاحي في R هو <- (ويعمل العامل = أيضًا).
| العملية | الصياغة |
|---|---|
| طباعة قيمة | print("Hello, World!") |
| طباعة تلقائية (في الكونسول) | "Hello, World!" |
| الدمج والطباعة | cat("Hi", name, "\n") |
| الإسناد (اصطلاحي) | x <- 5 |
| الإسناد (صالح أيضًا) | x = 5 |
| الإسناد إلى اليمين | 5 -> x |
| تعليق | # this is a comment |
| تشغيل سكربت | Rscript app.R |
أنواع البيانات والمتّجهات
المتّجه هو هيكل البيانات الأساسي في R؛ وحتى القيمة المفردة هي متّجه بطول 1.
| العملية | الصياغة |
|---|---|
| متّجه رقمي | v <- c(1, 2, 3) |
| متّجه نصي | s <- c("a", "b") |
| متّجه منطقي | b <- c(TRUE, FALSE) |
| تسلسل صحيح | 1:10 |
| تسلسل بخطوة | seq(0, 1, by = 0.1) |
| تكرار القيم | rep(0, times = 5) |
| الأنواع الأساسية | numeric, character, logical, integer, complex |
| فحص / إكراه النوع | class(x), as.numeric("42") |
عمليات المتّجهات
العمليات متّجهية وتُطبَّق عنصرًا بعنصر؛ والفهرسة تبدأ من 1.
| العملية | الصياغة |
|---|---|
| الوصول إلى عنصر (يبدأ من 1) | v[1] |
| تقطيع نطاق | v[2:4] |
| التصفية المنطقية | v[v > 2] |
| إسقاط عنصر | v[-1] |
| رياضيات عنصرًا بعنصر | v * 2, v1 + v2 |
| الطول | length(v) |
| مختزِلات شائعة | sum(v), mean(v), max(v) |
| الترتيب / العكس | sort(v), rev(v) |
| متّجه مسمّى | c(a = 1, b = 2) |
إطارات البيانات
إطار البيانات جدول من الأعمدة، كل منها متّجه بالطول نفسه.
| العملية | الصياغة |
|---|---|
| إنشاء إطار بيانات | df <- data.frame(name = c("Ada"), age = c(30)) |
| أول / آخر الصفوف | head(df), tail(df) |
| الأبعاد | nrow(df), ncol(df), dim(df) |
| أسماء الأعمدة | names(df), colnames(df) |
| تحديد عمود | df$age أو df[["age"]] |
| تحديد الصفوف / الأعمدة | df[1, ], df[, "age"] |
| تصفية الصفوف | df[df$age > 18, ] |
| إضافة عمود | df$adult <- df$age >= 18 |
| الإحصاءات الموجزة | summary(df) |
| نظرة عامة على البنية | str(df) |
العوامل والقوائم
العوامل تخزّن البيانات الفئوية؛ والقوائم تحمل عناصر من أنواع مختلطة.
| العملية | الصياغة |
|---|---|
| إنشاء عامل | f <- factor(c("low", "high")) |
| مستويات العامل | levels(f) |
| عامل مرتّب | factor(x, ordered = TRUE) |
| العدّ حسب المستوى | table(f) |
| إنشاء قائمة | l <- list(name = "Ada", scores = c(1, 2)) |
| الوصول بالاسم | l$name أو l[["name"]] |
| الوصول بالموضع | l[[1]] |
| قائمة فرعية (تبقى قائمة) | l[1] |
| الطول / الأسماء | length(l), names(l) |
التحكم في التدفق
الشروط توضع بين أقواس والكتل بين أقواس معقوفة.
| العملية | الصياغة |
|---|---|
| If / else if / else | if (x > 0) { ... } else if (x < 0) { ... } else { ... } |
| if-else متّجهية | ifelse(v > 0, "pos", "neg") |
| حلقة for | for (i in 1:10) { ... } |
| For على متّجه | for (x in v) { ... } |
| حلقة while | while (x < 100) { ... } |
| Repeat مع break | repeat { if (done) break } |
| Switch | switch(key, a = 1, b = 2) |
| العوامل المنطقية | &&, ||, ! (عددي)؛ &, | (متّجهي) |
الدوال
الدوال من الدرجة الأولى؛ ويُرجَع آخر تعبير مُقيَّم.
| العملية | الصياغة |
|---|---|
| تعريف دالة | add <- function(a, b) { a + b } |
| إرجاع صريح | return(a + b) |
| وسيط افتراضي | greet <- function(name = "World") { ... } |
| وسيط متغيّر | f <- function(...) { sum(...) } |
| النداء بالاسم | box(w = 2, h = 3) |
| دالة مجهولة الاسم | function(x) x * 2 |
| مجهولة الاسم (مختصرة) | \(x) x * 2 |
| التمرير لدالة عليا الرتبة | sapply(1:3, function(x) x^2) |
عائلة apply
تطبيق دالة على البيانات دون كتابة حلقات صريحة.
| الدالة | وظيفتها |
|---|---|
apply(m, 1, sum) | التطبيق على صفوف المصفوفة (1) أو أعمدتها (2) |
sapply(v, f) | التطبيق على متّجه مع التبسيط إلى متّجه/مصفوفة |
lapply(v, f) | التطبيق على متّجه، يُرجع قائمة دائمًا |
vapply(v, f, numeric(1)) | مثل sapply لكن بنوع إرجاع مفحوص |
mapply(f, a, b) | التطبيق على عدة متّجهات بالتوازي |
tapply(x, group, mean) | تطبيق دالة لكل مجموعة |
Map(f, a, b) | تطبيق متعدد المتغيرات يُرجع قائمة |
Reduce(+, v) | طيّ متّجه بدالة ثنائية |
دوال معالجة البيانات والإحصاء الشائعة
دوال أساسية كثيرة الاستخدام لتلخيص البيانات وإعادة تشكيلها.
| الدالة | وظيفتها |
|---|---|
mean(v) / median(v) | المتوسط / القيمة الوسطى |
sd(v) / var(v) | الانحراف المعياري / التباين |
min(v) / max(v) / range(v) | الأصغر / الأكبر / كلاهما |
quantile(v) | الكميّات (مثل الأرباع) |
table(x) | تكرارات القيم |
unique(v) / duplicated(v) | القيم المميّزة / أعلام التكرار |
is.na(v) / na.omit(df) | إيجاد / إسقاط القيم المفقودة |
aggregate(y ~ g, df, mean) | تلخيص y حسب المجموعة g |
order(v) | ترتيب الفهارس للترتيب |
cor(x, y) | الارتباط بين متّجهين |
صياغة R التي تستخدمها أكثر من غيرها، على صفحة واحدة. ورقة R المرجعية هذه هي مرجع سريع للّغة الأساسية - الإسناد وأنواع البيانات، والمتّجهات وعمليات المتّجهات، وإطارات البيانات، والعوامل والقوائم، والتحكم في التدفق، والدوال، وعائلة apply المستخدمة عبر تحليل بيانات rstats.
كل ما هنا هو R الأساسية ويعمل على تثبيت اعتيادي - دون الحاجة إلى أيّ حزم إضافية. انسخ ما تحتاجه، أو جرّب كل مقطع برمجي مباشرة في playground الخاص بـ R - دون الحاجة إلى أي إعداد.
الأسئلة الشائعة حول ورقة R المرجعية
هل ورقة R المرجعية هذه مجانية؟
نعم. ورقة R المرجعية هذه مجانية تمامًا، دون الحاجة إلى التسجيل. أضِفها إلى المفضلة وارجع إليها متى احتجت إلى البحث عن عملية متّجه أو دالة إطار بيانات أو دالة إحصاء.
هل متّجهات R تبدأ فهرستها من 1 فعلًا؟
v[1] العنصر الأول ويُرجع v[length(v)] العنصر الأخير. وللفهارس السالبة معنى خاص - فـ v[-1] يزيل العنصر الأول بدلًا من العدّ من النهاية. ويسري هذا العُرف الذي يبدأ من 1 عبر المتّجهات والقوائم وإطارات البيانات على حدّ سواء.ما هو إطار البيانات في R؟
df[rows, columns]، وتحدّد عمودًا بـ df$name، وتفحصه بـ str(df) أو summary(df).هل يمكنني التدرّب على R عبر الإنترنت؟
نعم. افتح playground الخاص بـ R لتشغيل أيّ مقطع برمجي من هذه الورقة المرجعية في متصفحك - دون الحاجة إلى تثبيت R أو RStudio. وعندما ترغب في تعلّم منظّم، تأخذك دورة R التفاعلية المجانية من Coddy من المتّجهات وإطارات البيانات إلى عائلة apply والإحصاء خطوة بخطوة.
هل هذه الورقة المرجعية مناسبة للمبتدئين؟
نعم. إنها مرتّبة من المواضيع الأكثر شيوعًا (الإسناد والمتّجهات وإطارات البيانات) وصولًا إلى المتقدمة (عائلة apply ودوال الإحصاء)، بحيث يمكنك استخدام الأقسام العلوية من اليوم الأول والتدرّج إلى البقية.