الفرز حسب مفتاح
جزء من قسم المنطق وتدفق التنفيذ في رحلة R على Coddy. الدرس 38 من 64.
تعيد order(x) المواضع التي سترتّب x: أولًا موضع أصغر قيمة، ثم موضع القيمة التالية، وهكذا. استخدم متجهًا آخر للفهرسة بها لترتيب ذلك المتجه وفقًا لـ x:
names <- c("cy", "ada", "bo")
ages <- c(41, 36, 22)
print(order(ages))
print(names[order(ages)])الناتج:
[1] 3 2 1
[1] "bo" "ada" "cy" للترتيب التنازلي، مرّر decreasing = TRUE، أو ضع علامة ناقص أمام مفتاح رقمي:
names <- c("cy", "ada", "bo")
scores <- c(80, 95, 80)
print(names[order(scores, decreasing = TRUE)])
print(names[order(-scores)])الناتج:
[1] "ada" "cy" "bo"
[1] "ada" "cy" "bo" امنح order() مفتاحًا ثانيًا لكسر حالات التعادل. هنا تُرتَّب الدرجات من الأعلى إلى الأدنى، وتُرتَّب الدرجات المتساوية حسب الاسم:
names <- c("cy", "ada", "bo")
scores <- c(80, 95, 80)
print(names[order(-scores, names)])الناتج:
[1] "ada" "bo" "cy" order() تحافظ على القيم المتساوية بترتيبها الأصلي عند عدم إعطاء مفتاح ثانٍ. ويمكن للمواضع نفسها إعادة ترتيب عدة متجهات تنتمي إلى بعضها:
items <- c("tea", "jam", "oil")
price <- c(4, 2.5, 4)
qty <- c(1, 6, 3)
idx <- order(price)
print(items[idx])
print(qty[idx])الناتج:
[1] "jam" "tea" "oil"
[1] 6 1 3التحدي
سهلأكمل ranking(names, scores). أعد سطرًا واحدًا لكل لاعب، مثل 1. ada 95، بدءًا من أعلى نتيجة وصولًا إلى أدنى نتيجة. يُدرج اللاعبون الذين لديهم النتيجة نفسها أبجديًا.
يقرأ الكود المرفق اللاعبين على شكل أزواج name:score مفصولة بفواصل، ويطبع كل سطر مُعاد.
جرّب بنفسك
ranking <- function(names, scores) {
# اكتب الكود الخاص بك هنا
character(0)
}
# كود الإدخال/الإخراج المُزوَّد: أبقِه كما هو
input <- suppressWarnings(readLines(file("stdin")))
pairs <- strsplit(strsplit(input[1], ",")[[1]], ":")
names <- sapply(pairs, function(p) p[1])
values <- as.numeric(sapply(pairs, function(p) p[2]))
cat(ranking(names, values), sep = "\n")
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
1السلاسل النصية بعمق
السلاسل الفرعية باستخدام substr()التنسيق باستخدام sprintf()التقسيم والضمالبحث في السلاسل النصيةاستبدال النصوصمراجعة - منشئ اسم المستخدم4المصفوفات
إنشاء المصفوفاتفهرسة المصفوفاتملخصات الصفوف والأعمدةالحساب على المصفوفاتمراجعة - مخطط المقاعد2استرجاع القيم باستخدام المفاتيح
البحث في المتجهات المُسمّاةالتحقق من المفاتيحإضافة المفاتيح وإزالتهاالتكرار عبر الأسماءمراجعة - مكتب الأسهم8الفرز والتجميع
فرز المتجهاتالفرز حسب مفتاحالتجميع باستخدام split()ملخصات المجموعاتمراجعة - لوحة المتصدرينتدرّب بنفسك: مترجم R عبر الإنترنت