בדיקת מפתחות
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-R של Coddy. שיעור 8 מתוך 64.
לפני חיפוש מפתח שעשוי להיות חסר, בדקו אם הוא קיים באמצעות %in% מול השמות:
stock <- c(apples = 12, pears = 0)
print("pears" %in% names(stock))
print("plums" %in% names(stock))פלט:
[1] TRUE
[1] FALSEתנאי if סביב החיפוש מספק ערך ברירת מחדל למפתח חסר, במקום NA או שגיאה:
stock <- c(apples = 12, pears = 0)
item <- "plums"
qty <- if (item %in% names(stock)) stock[[item]] else 0
print(qty)פלט:
[1] 0מפתח שקיים עם הערך 0 שונה ממפתח חסר: pears מוכר ו-out of stock, plums אינו נמכר כלל.
ברשימות משתמשים באותה בדיקה %in% names(). שם חסר ברשימה מחזיר NULL במקום שגיאה, ולכן גם is.null() פועלת:
user <- list(name = "Ada", city = "London")
print(is.null(user[["email"]]))
print("city" %in% names(user))פלט:
[1] TRUE
[1] TRUEפונקציית עזר קטנה מרכזת את הבדיקה במקום אחד כשמחפשים בתוכנית מפתחות רבים:
get_or <- function(x, key, default) {
if (key %in% names(x)) x[[key]] else default
}
stock <- c(apples = 12)
print(get_or(stock, "apples", 0))
print(get_or(stock, "kiwis", 0))פלט:
[1] 12
[1] 0אתגר
קלהשלימו את stock_status(stock, item). החזירו unknown אם item אינו מפתח של stock, את out of stock אם הערך שלו הוא 0, ואחרת את in stock: ואחריו הכמות.
הקוד שסופק קורא את המלאי כזוגות name=quantity המופרדים בפסיקים, ואז את הפריט, ומדפיס את הערך שהוחזר.
נסו בעצמכם
stock_status <- function(stock, item) {
# כתבו את הקוד שלכם כאן
""
}
# קוד קלט/פלט שסופק: השאירו אותו כפי שהוא
input <- suppressWarnings(readLines(file("stdin")))
stock <- c()
for (pair in strsplit(input[1], ",")[[1]]) {
kv <- strsplit(pair, "=")[[1]]
stock[kv[1]] <- as.numeric(kv[2])
}
cat(stock_status(stock, input[2]), sep = "\n")
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1מחרוזות לעומק
תת־מחרוזות עם substr()עיצוב עם sprintf()פיצול וחיבורחיפוש במחרוזותהחלפת טקסטסיכום – בונה שמות משתמש4מטריצות
יצירת מטריצותאינדוקס מטריצותסיכומי שורות ועמודותאריתמטיקה של מטריצותסיכום – תרשים מקומות ישיבה2שליפות לפי מפתח-ערך
שליפת וקטורים לפי שםבדיקת מפתחותהוספה והסרה של מפתחותמעבר בלולאה על שמותחזרה – דלפק המניותתרגלו בעצמכם: קומפיילר R אונליין