וקטורים בעלי שמות
חלק מהיחידה יסודות במסלול ה-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וקטורים בעלי שמות שימושיים במיוחד כשעובדים עם נתונים שיש להם תוויות טבעיות, למשל כשמאחסנים ציוני תלמידים לפי מקצוע או מחירים לפי שם המוצר.
אתגר
קלתקבלו שתי שורות קלט:
- רשימה מופרדת בפסיקים של שמות מוצרים (לדוגמה,
laptop,phone,tablet,headphones) - רשימה מופרדת בפסיקים של המחירים המתאימים (לדוגמה,
999,699,449,199)
בצעו את הפעולות הבאות:
- צרו וקטור מספרי מהמחירים
- הקצו את שמות המוצרים לווקטור באמצעות הפונקציה
names() - הדפיסו את הווקטור המלא עם השמות
- הדפיסו את המחיר של המוצר השני על ידי גישה אליו באמצעות שמו
- הדפיסו את המחיר של המוצר האחרון על ידי גישה אליו באמצעות שמו
לדוגמה, אם הקלט הוא:
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. הדפיסו את מחיר המוצר האחרון על ידי גישה אליו באמצעות שמוהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
4אופרטורים חלק 2
אופרטורים לוגיים (AND, OR)אופרטורים לוגיים חלק 2 (NOT)חזרה – לוגיקה פשוטהלוגיקה וקטורית חלק 1לוגיקה וקטורית חלק 27מחשבון לחלוקת החשבון
הודעת פתיחהקבלת קלט מהמשתמש2משתנים וסוגי נתונים
סוג נתונים מספריסוג נתונים שלמיםסוג נתונים של תוויםסוג נתונים לוגיבדיקת סוגי נתוניםמוסכמות למתן שמותערכים חסרים: NAסיכום – יצירת משתנים8לולאות
לולאת forלולאת whileפקודת breakהמשך (continue)סיכום – עצרתיצירת רצפים (seq, :)לולאות מקוננותסיכום – קלט דינמי3אופרטורים חלק 1
אופרטורים אריתמטייםחלוקת מספרים שלמים ומודולואופרטורי השמהחזרה – חשבון פשוטאופרטורי השוואה6קלט/פלט בסיסי
הדפסת פלטחתול כפלטפלט עם משתניםקריאת קלט באמצעות readline()יסודות המרת טיפוסיםחזרה – מחשבון גילחזרה – אמת או שקר9פונקציות
הכרזה על פונקציהארגומנטים של פונקציהערכי החזרהסיכום – פונקציית סיגמאסיכום – פונקציית אימותערכי ברירת מחדל לפרמטריםתרגלו בעצמכם: קומפיילר R אונליין