שליפת וקטורים לפי שם
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-R של Coddy. שיעור 7 מתוך 64.
וקטור עם שמות מאחסן ערכים תחת שמות, מה שהופך אותו לטבלת חיפוש: השם הוא המפתח והאיבר הוא הערך שלו. הכניסו את השם לתוך [[ ]] כדי לקבל את הערך לבדו.
prices <- c(tea = 4, cake = 7)
print(prices[["cake"]])
print(names(prices))פלט:
[1] 7
[1] "tea" "cake"סוגריים מרובעים יחידים מחזירים את הערך יחד עם שמו. [[ ]] מחזיר רק את הערך:
prices <- c(tea = 4, cake = 7)
print(prices["cake"])
print(prices[["cake"]] * 2)פלט:
cake
7
[1] 14השם יכול להגיע ממשתנה, וכך תוכנית מחפשת מפתח שהיא קראה מקלט:
prices <- c(tea = 4, cake = 7)
item <- "tea"
print(prices[[item]])פלט:
[1] 4וקטור של שמות מאחזר כמה מפתחות בבת אחת, כולל חזרות, ולכן sum() מסכמת הזמנה בצעד אחד:
prices <- c(tea = 4, cake = 7)
order <- c("tea", "cake", "tea")
print(sum(prices[order]))פלט:
[1] 15שם חסר מתנהג אחרת בשתי הצורות: prices["milk"] מחזיר NA, ואילו prices[["milk"]] נעצר עם השגיאה subscript out of bounds.
אתגר
קלהשלימו את line_total(item, qty). הפונקציה מגדירה את התפריט שלהלן. החזירו את המחיר של item כפול qty, בפורמט עם שתי ספרות אחרי הנקודה העשרונית: tea ו-3 נותנים 7.50.
menu <- c(tea = 2.5, coffee = 3, cake = 4.25, soup = 6)כל פריט בקלט מופיע בתפריט. הקוד שסופק קורא את הפריט ואת הכמות ומדפיס את הערך שהוחזר.
נסו בעצמכם
line_total <- function(item, qty) {
menu <- c(tea = 2.5, coffee = 3, cake = 4.25, soup = 6)
# כתבו כאן את הקוד שלכם
""
}
# קוד קלט/פלט שסופק: השאירו אותו כפי שהוא
input <- suppressWarnings(readLines(file("stdin")))
cat(line_total(input[1], as.numeric(input[2])), sep = "\n")
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1מחרוזות לעומק
תת־מחרוזות עם substr()עיצוב עם sprintf()פיצול וחיבורחיפוש במחרוזותהחלפת טקסטסיכום – בונה שמות משתמש4מטריצות
יצירת מטריצותאינדוקס מטריצותסיכומי שורות ועמודותאריתמטיקה של מטריצותסיכום – תרשים מקומות ישיבה2שליפות לפי מפתח-ערך
שליפת וקטורים לפי שםבדיקת מפתחותהוספה והסרה של מפתחותמעבר בלולאה על שמותחזרה – דלפק המניותתרגלו בעצמכם: קומפיילר R אונליין