ورقة 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 تبدأ فهرستها من 1 فعلًا؟
v[1] العنصر الأول ويُرجع v[length(v)] العنصر الأخير. وللفهارس السالبة معنى خاص - فـ v[-1] يزيل العنصر الأول بدلًا من العدّ من النهاية. ويسري هذا العُرف الذي يبدأ من 1 عبر المتّجهات والقوائم وإطارات البيانات على حدّ سواء.ما هو إطار البيانات في R؟
df[rows, columns]، وتحدّد عمودًا بـ df$name، وتفحصه بـ str(df) أو summary(df).