0Pricing
R Academy · درس

فرز المتجهات باستخدام sort()

افرز المتجهات الرقمية والنصية تصاعديًا أو تنازليًا.

فرز المتجهات باستخدام sort() درس مجاني في R Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في R Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة R Academy 4 دروس في المجموع.

ماذا تفعل sort()؟

ترتّب الدالة sort() عناصر المتجه تصاعديًا افتراضيًا. وهي تعمل مع المتجهات الرقمية ومتجهات المحارف والمتجهات المنطقية، وتعيد متجهًا جديدًا مرتبًا دون تعديل المتجه الأصلي.

scores <- c(42, 7, 95, 13, 67, 31)
sorted_scores <- sort(scores)
print(sorted_scores)

الترتيب تنازليًا

مرّر decreasing = TRUE إلى sort() لعكس الترتيب. يفيد ذلك في ترتيب النتائج من الأعلى إلى الأدنى، مثل نتائج لوحة المتصدرين أو أرقام المبيعات.

prices <- c(19.99, 5.49, 89.00, 34.50, 12.75)
sort(prices, decreasing = TRUE)

ترتيب متجهات المحارف

تُرتّب متجهات المحارف ترتيبًا معجميًا (أبجديًا). تستخدم R الإعداد المحلي للنظام في الترتيب، لذلك قد تسبق الأحرف الكبيرة الأحرف الصغيرة، وذلك حسب إعداد اللغة المحلية.

fruits <- c('banana', 'Apple', 'cherry', 'apricot', 'Blueberry')
sort(fruits)

سلوك الترتيب الحساس لحالة الأحرف

في معظم الإعدادات المحلية، تسبق الأحرف الكبيرة الأحرف الصغيرة في الترتيب. وللترتيب دون تمييز حالة الأحرف، حوّلها أولًا إلى حالة موحّدة باستخدام tolower() أو toupper() قبل الترتيب.

words <- c('Zebra', 'apple', 'Mango', 'banana')
# Case-sensitive (uppercase first)
sort(words)
# Case-insensitive approach
words[order(tolower(words))]

معالجة قيم NA باستخدام na.last

تزيل sort() قيم NA افتراضيًا. استخدم na.last = TRUE لوضع قيم NA في النهاية، أو na.last = FALSE لوضعها في البداية. يحدد ذلك موضع القيم المفقودة في النتيجة.

data <- c(5, NA, 2, NA, 8, 1)
# Default: NAs removed
sort(data)
# NAs at end
sort(data, na.last = TRUE)
# NAs at beginning
sort(data, na.last = FALSE)

ترتيب المتجهات المنطقية

تُرتّب المتجهات المنطقية بحيث تأتي FALSE (0) قبل TRUE (1) في الترتيب التصاعدي. وقد يكون ذلك مفيدًا عند الرغبة في تجميع القيم TRUE/FALSE معًا.

flags <- c(TRUE, FALSE, TRUE, FALSE, FALSE, TRUE)
sort(flags)
sort(flags, decreasing = TRUE)

تحافظ sort() على نوع المتجه

تعيد sort() دائمًا متجهًا من النوع نفسه لنوع الإدخال. فترتيب الأعداد الصحيحة يعيد أعدادًا صحيحة، وترتيب الأعداد double يعيد أعدادًا double، وترتيب المحارف يعيد محارف. كما تُحافَظ على سمة class.

int_vec <- c(5L, 2L, 8L, 1L, 4L)
result <- sort(int_vec)
print(result)
print(class(result))
print(typeof(result))

sort.int() لترتيب الأعداد الصحيحة

تُعد sort.int() دالة منخفضة المستوى مخصصة لترتيب متجهات integer أو double. وتقبل الوسائط نفسها التي تقبلها sort()، لكنها أسرع قليلًا للمتجهات الرقمية الكبيرة لأنها تتجاوز بعض النفقات العامة لإرسال الدوال.

big_vec <- c(100L, 3L, 77L, 22L, 55L, 9L)
# sort.int works like sort for numeric/integer vectors
result <- sort.int(big_vec, decreasing = FALSE)
print(result)

لا يتغير المتجه الأصلي

من الخصائص المهمة للدالة sort() أنها لا تعدّل المتجه الأصلي، بل تعيد متجهًا جديدًا مرتبًا. يجب إسناد النتيجة إذا أردت الاحتفاظ بالترتيب الجديد.

temps <- c(22.5, 18.0, 30.1, 15.3, 27.8)
sorted_temps <- sort(temps)
cat('Original:', temps, '\n')
cat('Sorted:  ', sorted_temps, '\n')

الترتيب والفهرسة معًا

قد تحتاج أحيانًا إلى القيم المرتبة ومواضعها الأصلية معًا. ادمج sort() مع which()، أو استخدم order() (التي ستتعلمها في الدرس التالي) لاسترداد الفهارس الأصلية إلى جانب القيم المرتبة.

exam_scores <- c(78, 92, 65, 88, 71)
sorted <- sort(exam_scores)
cat('Sorted scores:', sorted, '\n')
# Find what rank each original score gets
ranks <- rank(exam_scores)
cat('Rank of each student:', ranks, '\n')

أنماط عملية لاستخدام sort()

من الأنماط الشائعة ترتيب القيم الفريدة في متجه، أو الحصول على أكبر N من القيم باستخدام sort() مع head() أو tail().

sales <- c(120, 340, 95, 210, 340, 180, 95, 420)
# Unique values in order
sort(unique(sales))
# Top 3 largest
tail(sort(sales), 3)
# Bottom 3 smallest
head(sort(sales), 3)

تحقق سريع

ما الوسيطة التي تتحكم في ظهور قيم NA في البداية أو النهاية، أو إسقاطها عند استخدام sort()؟

أهم النقاط حول sort()

أهم النقاط حول sort():

  • استخدم sort(x) للترتيب التصاعدي وsort(x, decreasing=TRUE) للترتيب التنازلي
  • تُرتّب متجهات المحارف أبجديًا، وتُراعى حالة الأحرف افتراضيًا
  • تحكّم في موضع NA باستخدام na.last = TRUE/FALSE/NA
  • لا تعدّل sort() المتجه الأصلي، بل تعيد دائمًا متجهًا جديدًا
  • استخدم tail(sort(x), n) أو head(sort(x), n) للحصول على أكبر N أو أصغر N من القيم
  • تُعد sort.int() نسخة أسرع للمتجهات الرقمية أو متجهات integer
x <- c(3, 1, NA, 5, 2, NA, 4)
cat('Ascending (no NAs):', sort(x), '\n')
cat('Descending (NAs last):', sort(x, decreasing = TRUE, na.last = TRUE), '\n')

الأسئلة الشائعة

هل درس «فرز المتجهات باستخدام sort()» مجاني؟

نعم — نص درس «فرز المتجهات باستخدام sort()» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة R Academy، انتقل إلى CoddyKit PRO. تتضمن دورة R Academy 4 دروس في المجموع.

ماذا ستتعلم في «فرز المتجهات باستخدام sort()»؟

افرز المتجهات الرقمية والنصية تصاعديًا أو تنازليًا. تتمرن على R Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ R Academy؟

لا تُشترط خبرة سابقة. R Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «فرز المتجهات باستخدام sort()»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس R Academy هذا؟

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

جميع الدروس في هذه الدورة

  1. فرز المتجهات باستخدام sort()
  2. order() للترتيب المرن
  3. ترتيب القيم باستخدام rank()
  4. فرز إطارات البيانات حسب العمود
← العودة إلى R Academy