סיכומי שורות ועמודות
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-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) עבור כל עמודה:
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.3apply() מקבלת גם פונקציה שכותבים במקום באמצעות 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: ואחריה מספר העמודה עם הממוצע הגבוה ביותר.
הקוד שסופק קורא מטריצה משורה אחת: השורות מופרדות באמצעות ; והערכים בשורה באמצעות ,, כך ש-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מטריצות
יצירת מטריצותאינדוקס מטריצותסיכומי שורות ועמודותאריתמטיקה של מטריצותסיכום – תרשים מקומות ישיבהתרגלו בעצמכם: קומפיילר R אונליין