מעבר בלולאה על שמות
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-R של Coddy. שיעור 10 מתוך 64.
לולאת for על names(x) עוברת על כל מפתח, ו-x[[key]] מחזיר את הערך של אותו מפתח:
scores <- c(ada = 91, bo = 78, cy = 85)
for (name in names(scores)) {
cat(name, "scored", scores[[name]], "\n")
}פלט:
ada scored 91
bo scored 78
cy scored 85 הפריטים נשארים בסדר שבו הם נוספו. כדי לקבל סדר אלפביתי, עברו בלולאה על sort(names(x)):
scores <- c(cy = 85, ada = 91, bo = 78)
for (name in sort(names(scores))) {
cat(name, scores[[name]], "\n")
}פלט:
ada 91
bo 78
cy 85 מעבר בלולאה על הקלט ועדכון טבלת חיפוש סופרים כמה פעמים כל ערך מופיע. בפעם הראשונה שמילה מופיעה, הערך שלה הוא 1, ולאחר מכן הוא גדל ב-1:
words <- c("red", "blue", "red", "green", "red")
counts <- c()
for (w in words) {
if (w %in% names(counts)) {
counts[w] <- counts[w] + 1
} else {
counts[w] <- 1
}
}
print(counts[["red"]])
print(names(counts))פלט:
[1] 3
[1] "red" "blue" "green"כדי ליצור שורות פלט, אספו אותן בווקטור בתוך הלולאה והחזירו או הדפיסו אותן בסוף:
scores <- c(ada = 91, bo = 78)
lines <- c()
for (name in names(scores)) {
lines <- c(lines, paste0(name, ": ", scores[[name]]))
}
cat(lines, sep = "\n")פלט:
ada: 91
bo: 78אתגר
קלהשלימו את word_counts(words). החזירו שורה אחת לכל מילה ייחודית, בסדר אלפביתי, בפורמט word: count.
הקוד שסופק קורא את המילים בשורה אחת, כשהן מופרדות ברווחים, ומדפיס כל שורה שהוחזרה.
נסו בעצמכם
word_counts <- function(words) {
# כתבו את הקוד שלכם כאן
character(0)
}
# קוד הקלט/פלט שסופק: השאירו אותו כפי שהוא
input <- suppressWarnings(readLines(file("stdin")))
cat(word_counts(strsplit(input[1], " ")[[1]]), sep = "\n")
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1מחרוזות לעומק
תת־מחרוזות עם substr()עיצוב עם sprintf()פיצול וחיבורחיפוש במחרוזותהחלפת טקסטסיכום – בונה שמות משתמש4מטריצות
יצירת מטריצותאינדוקס מטריצותסיכומי שורות ועמודותאריתמטיקה של מטריצותסיכום – תרשים מקומות ישיבה2שליפות לפי מפתח-ערך
שליפת וקטורים לפי שםבדיקת מפתחותהוספה והסרה של מפתחותמעבר בלולאה על שמותחזרה – דלפק המניותתרגלו בעצמכם: קומפיילר R אונליין