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