אינדוקס מטריצות
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-R של Coddy. שיעור 18 מתוך 64.
m[i, j] הוא הערך בשורה i ובעמודה j. השאר צד אחד ריק כדי לקבל שורה או עמודה שלמה: m[i, ] היא שורה i ו-m[, j] היא עמודה j.
m <- matrix(1:6, nrow = 2, byrow = TRUE)
print(m[2, 3])
print(m[1, ])
print(m[, 2])פלט:
[1] 6
[1] 1 2 3
[1] 2 5אותם אינדקסים פועלים גם בצד שמאל של <-, כך שאפשר להחליף תא, שורה או עמודה:
m <- matrix(0, nrow = 2, ncol = 3)
m[1, 2] <- 5
m[2, ] <- c(7, 8, 9)
print(m)פלט:
[,1] [,2] [,3]
[1,] 0 5 0
[2,] 7 8 9לשורות ולעמודות יכולים להיות שמות, שאותם מגדירים באמצעות rownames() ו־colnames(). לאחר מכן, שם משמש כאינדקס:
sales <- matrix(c(3, 5, 2, 8), nrow = 2, byrow = TRUE)
rownames(sales) <- c("north", "south")
colnames(sales) <- c("jan", "feb")
print(sales["south", "feb"])
print(sales[, "jan"])פלט:
[1] 8
north south
3 2 וקטורים של אינדקסים בוחרים בלוק של שורות ועמודות בבת אחת:
m <- matrix(1:9, nrow = 3, byrow = TRUE)
print(m[1:2, 2:3])
print(m[c(1, 3), 1])פלט:
[,1] [,2]
[1,] 2 3
[2,] 5 6
[1] 1 7אתגר
קלהשלימו את cell_report(m, r, c). החזירו שלוש שורות: Cell: עם הערך בשורה r ובעמודה c, Row: עם הערכים בשורה r, ו־Column: עם הערכים בעמודה c. הפרידו בין הערכים באמצעות רווח יחיד.
הקוד שסופק קורא מטריצה משורה אחת: בין השורות מפריד התו ;, ובין הערכים בשורה מפריד התו ,, כך ש־1,2;3,4 היא מטריצה עם השורות 1 2 ו־3 4. בשתי השורות הבאות מופיעים r ו־c. הקוד מדפיס כל שורה שהוחזרה.
נסו בעצמכם
cell_report <- function(m, r, c) {
# כתבו את הקוד שלכם כאן
c("Cell: ", "Row: ", "Column: ")
}
# קוד הקלט/פלט שסופק: השאירו אותו כפי שהוא
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(cell_report(parse_matrix(input[1]), as.numeric(input[2]), as.numeric(input[3])), sep = "\n")
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1מחרוזות לעומק
תת־מחרוזות עם substr()עיצוב עם sprintf()פיצול וחיבורחיפוש במחרוזותהחלפת טקסטסיכום – בונה שמות משתמש4מטריצות
יצירת מטריצותאינדוקס מטריצותסיכומי שורות ועמודותאריתמטיקה של מטריצותסיכום – תרשים מקומות ישיבהתרגלו בעצמכם: קומפיילר R אונליין