ملخصات الصفوف والأعمدة
جزء من قسم المنطق وتدفق التنفيذ في رحلة R على Coddy. الدرس 19 من 64.
rowSums() وrowMeans() يعيدان نتيجة واحدة لكل صف؛ وcolSums() وcolMeans() نتيجة واحدة لكل عمود. هنا يمثّل كل صف طالبًا ويمثّل كل عمود اختبارًا:
scores <- matrix(c(80, 90, 70, 60, 75, 85), nrow = 2, byrow = TRUE)
print(rowMeans(scores))
print(colSums(scores))الناتج:
[1] 80.00000 73.33333
[1] 140 165 155بالنسبة إلى أي ملخص آخر، تستدعي apply(m, 1, f) الدالة f لكل صف، وتستدعي apply(m, 2, f) الدالة f لكل عمود:
scores <- matrix(c(80, 90, 70, 60, 75, 85), nrow = 2, byrow = TRUE)
print(apply(scores, 1, max))
print(apply(scores, 2, min))الناتج:
[1] 90 85
[1] 60 75 70اجمع ملخصًا مع which.max() للعثور على الصف أو العمود الفائز:
scores <- matrix(c(80, 90, 70, 60, 75, 85), nrow = 2, byrow = TRUE)
best_test <- which.max(colMeans(scores))
print(best_test)
print(round(rowMeans(scores), 1))الناتج:
[1] 2
[1] 80.0 73.3تقبل apply() أيضًا دالة تكتبها مباشرةً باستخدام function(r). وهنا تحسب عدد القيم الأكبر من 5 في كل صف:
m <- matrix(c(3, 8, 1, 9, 2, 7), nrow = 2, byrow = TRUE)
print(apply(m, 1, function(r) sum(r > 5)))الناتج:
[1] 1 2التحدي
سهلأكمل class_report(scores). كل صف من scores يمثل طالبًا وكل عمود اختبارًا. أعد سطرًا واحدًا لكل طالب، مثل Student 1: 81.7، بحيث يكون متوسط الطالب مقربًا إلى منزلة عشرية واحدة. أضف سطرًا أخيرًا Best test: متبوعًا برقم العمود ذي أعلى متوسط.
يقرأ الكود المُ provided مصفوفة من سطر واحد: تُفصل الصفوف باستخدام ; وتُفصل قيم الصف باستخدام ,، لذا فإن 1,2;3,4 هي مصفوفة تحتوي على الصفين 1 2 و3 4. يطبع الكود كل سطر مُعاد.
جرّب بنفسك
class_report <- function(scores) {
# اكتب الكود الخاص بك هنا
character(0)
}
# كود الإدخال/الإخراج المُزوَّد: أبقِه كما هو
input <- suppressWarnings(readLines(file("stdin")))
parse_matrix <- function(line) {
rows <- strsplit(line, ";")[[1]]
matrix(as.numeric(unlist(strsplit(rows, ","))), nrow = length(rows), byrow = TRUE)
}
cat(class_report(parse_matrix(input[1])), sep = "\n")
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
1السلاسل النصية بعمق
السلاسل الفرعية باستخدام substr()التنسيق باستخدام sprintf()التقسيم والضمالبحث في السلاسل النصيةاستبدال النصوصمراجعة - منشئ اسم المستخدم4المصفوفات
إنشاء المصفوفاتفهرسة المصفوفاتملخصات الصفوف والأعمدةالحساب على المصفوفاتمراجعة - مخطط المقاعد2استرجاع القيم باستخدام المفاتيح
البحث في المتجهات المُسمّاةالتحقق من المفاتيحإضافة المفاتيح وإزالتهاالتكرار عبر الأسماءمراجعة - مكتب الأسهمتدرّب بنفسك: مترجم R عبر الإنترنت