יצירת רשימות
חלק מהיחידה יסודות במסלול ה-R של Coddy. שיעור 71 מתוך 78.
וקטורים הם כלי רבי עוצמה, אבל יש להם מגבלה אחת: כל האיברים חייבים להיות מאותו טיפוס. כשצריך לאחסן יחד סוגים שונים של נתונים, R מספקת רשימות.
רשימה היא מבנה נתונים גמיש שיכול להכיל איברים מסוגים שונים, כולל מספרים, תווים, ערכים לוגיים ואפילו וקטורים או רשימות אחרים. יוצרים רשימה באמצעות הפונקציה list():
my_list <- list(42, "hello", TRUE)
print(my_list)פלט:
[[1]]
[1] 42
[[2]]
[1] "hello"
[[3]]
[1] TRUEשימו לב שכל איבר מוצג עם האינדקס שלו בסוגריים כפולים. זה שונה מווקטורים, שבהם האיברים מופיעים בשורה אחת. רשימות יכולות להכיל גם וקטורים כאיברים:
my_list <- list(c(1, 2, 3), "text", c(TRUE, FALSE))
print(my_list)פלט:
[[1]]
[1] 1 2 3
[[2]]
[1] "text"
[[3]]
[1] TRUE FALSEהיכולת הזו לשלב בין סוגי נתונים שונים הופכת רשימות לאידיאליות לייצוג מבני נתונים מורכבים, כמו פרופיל של אדם שמכיל את הגיל, השם וסטטוס החברות שלו, הכול באובייקט אחד.
אתגר
קלתקבל שלוש שורות קלט:
- ערך מספרי (למשל,
99.99) - ערך טקסט (למשל,
Premium Member) - ערך לוגי כטקסט:
TRUEאוFALSE(למשל,TRUE)
בצע את הפעולות הבאות:
- קרא את שלושת הקלטים והמר אותם לטיפוסים המתאימים (מספרי, תווי ולוגי)
- צור רשימה המכילה את שלושת הערכים האלה לפי הסדר: תחילה הערך המספרי, אחריו הטקסט, ולבסוף הערך הלוגי
- צור רשימה שנייה המכילה וקטור של שלושה מספרים
c(10, 20, 30)כאיבר הראשון שלה, ואת הטקסט"data"כאיבר השני שלה - הדפס את הרשימה הראשונה
- הדפס את הרשימה השנייה
לדוגמה, אם הקלט הוא:
42.5
Active User
FALSEהפלט צריך להיות:
[[1]]
[1] 42.5
[[2]]
[1] "Active User"
[[3]]
[1] FALSE
[[1]]
[1] 10 20 30
[[2]]
[1] "data"זכור שרשימות יכולות להכיל איברים מטיפוסים שונים, ואפשר לכלול וקטורים כאיברים ברשימה.
נסו בעצמכם
# קראו את שלושת ערכי הקלט
con <- file("stdin", "r")
numeric_input <- suppressWarnings(readLines(con, n = 1))
text_input <- suppressWarnings(readLines(con, n = 1))
logical_input <- suppressWarnings(readLines(con, n = 1))
# TODO: כתבו את הקוד שלכם למטה
# 1. המירו את ערכי הקלט לטיפוסים המתאימים להם (numeric, character, logical)
# 2. צרו רשימה המכילה את שלושת הערכים שהומרו, לפי הסדר
# 3. צרו רשימה שנייה שבה c(10, 20, 30) הוא האיבר הראשון ו-"data" הוא האיבר השני
# 4. הדפיסו את שתי הרשימותהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
4אופרטורים חלק 2
אופרטורים לוגיים (AND, OR)אופרטורים לוגיים חלק 2 (NOT)חזרה – לוגיקה פשוטהלוגיקה וקטורית חלק 1לוגיקה וקטורית חלק 27מחשבון לחלוקת החשבון
הודעת פתיחהקבלת קלט מהמשתמש2משתנים וסוגי נתונים
סוג נתונים מספריסוג נתונים שלמיםסוג נתונים של תוויםסוג נתונים לוגיבדיקת סוגי נתוניםמוסכמות למתן שמותערכים חסרים: NAסיכום – יצירת משתנים8לולאות
לולאת forלולאת whileפקודת breakהמשך (continue)סיכום – עצרתיצירת רצפים (seq, :)לולאות מקוננותסיכום – קלט דינמי3אופרטורים חלק 1
אופרטורים אריתמטייםחלוקת מספרים שלמים ומודולואופרטורי השמהחזרה – חשבון פשוטאופרטורי השוואה6קלט/פלט בסיסי
הדפסת פלטחתול כפלטפלט עם משתניםקריאת קלט באמצעות readline()יסודות המרת טיפוסיםחזרה – מחשבון גילחזרה – אמת או שקר9פונקציות
הכרזה על פונקציהארגומנטים של פונקציהערכי החזרהסיכום – פונקציית סיגמאסיכום – פונקציית אימותערכי ברירת מחדל לפרמטריםתרגלו בעצמכם: קומפיילר R אונליין