Menu
Coddy logo textTech

וקטורים בעלי שמות

חלק מהיחידה יסודות במסלול ה-R של Coddy. שיעור 62 מתוך 78.

עד כה, ניגשת לאיברי וקטור באמצעות מיקומים מספריים. אבל מה אם יכולת לגשת אליהם באמצעות שמות בעלי משמעות במקום זאת? וקטורים בעלי שמות מאפשרים לך להקצות תוויות לכל איבר, וכך להפוך את הקוד שלך לקריא יותר ולמתעד את עצמו.

אפשר ליצור וקטור בעל שמות על ידי ציון שמות בעת יצירתו:

ages <- c(alice = 25, bob = 30, charlie = 28)
print(ages)

פלט:

  alice     bob charlie 
     25      30      28

כדי לגשת לאיברים לפי שם, יש להשתמש בשם כמחרוזת בתוך סוגריים מרובעים:

print(ages["bob"])

פלט:

bob 
 30

אפשר גם להוסיף שמות לווקטור קיים באמצעות הפונקציה names():

scores <- c(85, 92, 78)
names(scores) <- c("math", "science", "english")
print(scores["math"])

פלט:

math 
  85

וקטורים בעלי שמות שימושיים במיוחד כשעובדים עם נתונים שיש להם תוויות טבעיות, למשל כשמאחסנים ציוני תלמידים לפי מקצוע או מחירים לפי שם המוצר.

challenge icon

אתגר

קל

תקבלו שתי שורות קלט:

  1. רשימה מופרדת בפסיקים של שמות מוצרים (לדוגמה, laptop,phone,tablet,headphones)
  2. רשימה מופרדת בפסיקים של המחירים המתאימים (לדוגמה, 999,699,449,199)

בצעו את הפעולות הבאות:

  1. צרו וקטור מספרי מהמחירים
  2. הקצו את שמות המוצרים לווקטור באמצעות הפונקציה names()
  3. הדפיסו את הווקטור המלא עם השמות
  4. הדפיסו את המחיר של המוצר השני על ידי גישה אליו באמצעות שמו
  5. הדפיסו את המחיר של המוצר האחרון על ידי גישה אליו באמצעות שמו

לדוגמה, אם הקלט הוא:

apple,banana,orange,grape
2,1,3,4

הפלט אמור להיות:

apple banana orange  grape 
    2      1      3      4 
banana 
     1 
grape 
    4

הערה: גשו לאיבר השני ולאיבר האחרון באמצעות שם בתור האינדקס (מחרוזת, לדוגמה prices["banana"]), ולא באמצעות מיקום מספרי. השמות מגיעים משורת הקלט הראשונה, לכן חפשו שם את השם המתאים תחילה.

נסו בעצמכם

# קראו את הקלט
con <- file("stdin", "r")
products_input <- suppressWarnings(readLines(con, n = 1))
prices_input <- suppressWarnings(readLines(con, n = 1))
close(con)

# פענחו את הקלטים המופרדים בפסיקים
product_names <- strsplit(products_input, ",")[[1]]
price_values <- strsplit(prices_input, ",")[[1]]

# TODO: כתבו את הקוד שלכם למטה
# 1. צרו וקטור מספרי מהמחירים
# 2. הקצו את שמות המוצרים לווקטור באמצעות names()
# 3. הדפיסו את הווקטור בעל השמות כולו
# 4. הדפיסו את מחיר המוצר השני על ידי גישה אליו באמצעות שמו
# 5. הדפיסו את מחיר המוצר האחרון על ידי גישה אליו באמצעות שמו
quiz iconבחנו את עצמכם

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

כל השיעורים ביחידה יסודות

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