חיפוש במחרוזות
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-R של Coddy. שיעור 4 מתוך 64.
grepl(pattern, x) מחזירה TRUE עבור כל איבר ב־x שמכיל את pattern. הוסף fixed = TRUE כדי לחפש את התווים המדויקים. בלעדיו, התבנית היא ביטוי רגולרי, שבו לתווים כמו . ו־? יש משמעויות מיוחדות.
files <- c("report.csv", "photo.png", "data.csv")
print(grepl(".csv", files, fixed = TRUE))
print(files[grepl(".csv", files, fixed = TRUE)])פלט:
[1] TRUE FALSE TRUE
[1] "report.csv" "data.csv" startsWith(x, prefix) ו-endsWith(x, suffix) בודקות רק את תחילתה או את סופה של כל מחרוזת. כל החיפושים האלה תלויי רישיות, לכן יש להמיר באמצעות tolower() קודם כדי להתעלם מרישיות.
names <- c("Anna", "bob", "Andre")
print(startsWith(names, "An"))
print(startsWith(tolower(names), "b"))פלט:
[1] TRUE FALSE TRUE
[1] FALSE TRUE FALSEהתוצאות הן וקטורים לוגיים, ולכן sum() סופרת את ההתאמות ו־any() בודקת אם יש לפחות התאמה אחת:
emails <- c("a@x.com", "bad-address", "c@y.org")
valid <- grepl("@", emails, fixed = TRUE)
print(sum(valid))
print(any(!valid))פלט:
[1] 2
[1] TRUEgrep(pattern, x) מחזירה את המיקומים של האיברים התואמים, ו־grep(pattern, x, value = TRUE) את האיברים עצמם:
files <- c("a.csv", "b.txt", "c.csv")
print(grep(".csv", files, fixed = TRUE))
print(grep(".csv", files, fixed = TRUE, value = TRUE))פלט:
[1] 1 3
[1] "a.csv" "c.csv"אתגר
קלהשלימו את count_domain(emails, domain). החזירו את מספר הכתובות ב-emails שמסתיימות ב-@ ואחריו domain. התעלמו מהבדלי אותיות גדולות וקטנות: CY@CODDY.TECH נספרת עבור התחום coddy.tech.
הקוד שסופק קורא את הכתובות בשורה מופרדת בפסיקים, לאחר מכן את התחום, ומדפיס את המספר שהוחזר.
נסו בעצמכם
count_domain <- function(emails, domain) {
# כתבו כאן את הקוד שלכם
0
}
# קוד הקלט/פלט שסופק: השאירו אותו כפי שהוא
input <- suppressWarnings(readLines(file("stdin")))
emails <- strsplit(input[1], ",")[[1]]
cat(count_domain(emails, input[2]), sep = "\n")
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1מחרוזות לעומק
תת־מחרוזות עם substr()עיצוב עם sprintf()פיצול וחיבורחיפוש במחרוזותהחלפת טקסטסיכום – בונה שמות משתמש4מטריצות
יצירת מטריצותאינדוקס מטריצותסיכומי שורות ועמודותאריתמטיקה של מטריצותסיכום – תרשים מקומות ישיבהתרגלו בעצמכם: קומפיילר R אונליין