Menu
Coddy logo textTech

שליפת וקטורים לפי שם

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-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.

challenge icon

אתגר

קל

השלימו את 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")
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר R אונליין