Menu
Coddy logo textTech

רשימות עם שמות

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

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

אפשר להקצות שמות בעת יצירת הרשימה:

person <- list(name = "Alice", age = 25, active = TRUE)
print(person)

פלט:

$name
[1] "Alice"

$age
[1] 25

$active
[1] TRUE

שימו לב שהפלט מציג כעת את $name במקום את [[1]]. כדי לגשת לאיברים בעלי שם, השתמשו באופרטור $:

person <- list(name = "Alice", age = 25, active = TRUE)
print(person$age)

פלט:

[1] 25

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

person <- list(name = "Alice", age = 25)
print(person[["name"]])

פלט:

[1] "Alice"

שינוי של איברים בעלי שם נעשה באותו אופן. השתמשו ב־$ כדי לשנות ערכים קיימים או להוסיף ערכים חדשים:

person <- list(name = "Alice", age = 25)
person$age <- 26
person$city <- "Paris"
print(person)

פלט:

$name
[1] "Alice"

$age
[1] 26

$city
[1] "Paris"
challenge icon

אתגר

קל

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

  1. שם של ספר (לדוגמה, The Great Gatsby)
  2. מחבר הספר (לדוגמה, F. Scott Fitzgerald)
  3. שנת הפרסום (לדוגמה, 1925)

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

  1. צרו רשימה בעלת שמות בשם book עם שלושה איברים: title, author ו-year (המירו את השנה למספר)
  2. הדפיסו את שם הספר באמצעות האופרטור $
  3. הדפיסו את שנת הספר באמצעות סוגריים כפולים, כשהשם הוא מחרוזת
  4. עדכנו את year כך שתהיה מאוחרת בשנה אחת, באמצעות האופרטור $
  5. הוסיפו איבר חדש בשם available עם הערך TRUE
  6. הדפיסו את הרשימה המעודכנת המלאה

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

1984
George Orwell
1949

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

[1] "1984"
[1] 1949
$title
[1] "1984"

$author
[1] "George Orwell"

$year
[1] 1950

$available
[1] TRUE

הסבר:

  • book$title מדפיס את ערך הכותרת
  • book[["year"]] מדפיס את השנה המקורית
  • השנה מתעדכנת מ-1949 ל-1950
  • נוסף איבר חדש בשם available עם הערך TRUE

נסו בעצמכם

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

# TODO: כתבו את הקוד שלכם למטה
# 1. צרו רשימה בעלת שמות בשם 'book' עם האיברים: title, author ו־year (המירו את year למספר)
# 2. הדפיסו את כותרת הספר באמצעות האופרטור $
# 3. הדפיסו את שנת הספר באמצעות סוגריים מרובעים כפולים, כשהשם הוא מחרוזת
# 4. עדכנו את השנה כך שתהיה מאוחרת בשנה אחת באמצעות האופרטור $
# 5. הוסיפו איבר חדש בשם 'available' עם הערך TRUE
# 6. הדפיסו את הרשימה המעודכנת במלואה
quiz iconבחנו את עצמכם

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

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

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