Menu
CoddyTech

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

חלק מהיחידה יסודות במסלול ה-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. עדכנו את השנה כך שתהיה מאוחרת ב-1 באמצעות האופרטור $
# 5. הוסיפו איבר חדש בשם 'available' עם הערך TRUE
# 6. הדפיסו את הרשימה המעודכנת במלואה
quiz iconבחנו את עצמכם

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

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

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