Menu
Coddy logo textTech

איטרציה על תווים (strsplit

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

מה אם צריך לעבד כל תו במחרוזת בנפרד? בניגוד לווקטורים, אי אפשר לעבור ישירות בלולאה על התווים של מחרוזת ב-R. הפונקציה strsplit() פותרת זאת באמצעות פיצול מחרוזת לווקטור של תווים.

הפונקציה strsplit() מקבלת שני ארגומנטים: המחרוזת לפיצול והמפריד. כדי לפצל לתווים בודדים, יש להשתמש במחרוזת ריקה "" כמפריד:

word <- "hello"
chars <- strsplit(word, "")[[1]]
print(chars)

פלט:

[1] "h" "e" "l" "l" "o"

שימו לב ל-[[1]] בסוף. הסיבה לכך היא ש-strsplit() מחזירה רשימה, ועלינו לחלץ את האיבר הראשון כדי לקבל את וקטור התווים שלנו. לאחר שהתווים נמצאים בווקטור, אפשר לעבור עליהם באמצעות הטכניקות שכבר למדתם:

word <- "R"
chars <- strsplit(word, "")[[1]]
for (char in chars) {
  print(char)
}

פלט:

[1] "R"

הטכניקה הזו חיונית למשימות כמו ספירת תווים מסוימים, היפוך מחרוזות או אימות קלט תו אחר תו.

challenge icon

אתגר

קל

תקבל שורת קלט אחת שמכילה מילה (למשל, programming).

השתמשו ב־strsplit() כדי לפצל את המחרוזת לתווים בודדים:

  1. פצלו את מילת הקלט לווקטור של תווים
  2. עברו בלולאה על כל תו בווקטור
  3. ספרו כמה פעמים האות "a" מופיעה במילה (תוך הבחנה בין אותיות גדולות לקטנות)
  4. הדפיסו כל תו בשורה משלו באמצעות print()
  5. לאחר הלולאה, הדפיסו את הספירה באמצעות cat() בתבנית: Count of 'a': X ואחריה תו ירידת שורה

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

banana

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

[1] "b"
[1] "a"
[1] "n"
[1] "a"
[1] "n"
[1] "a"
Count of 'a': 3

הסבר: המילה "banana" מפוצלת לתווים c("b", "a", "n", "a", "n", "a"). כל תו מודפס, והאות "a" מופיעה 3 פעמים.

נסו בעצמכם

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

# אתחלו מונה עבור האות 'a'
count_a <- 0

# TODO: כתבו את הקוד שלכם למטה
# 1. השתמשו ב-strsplit() כדי לפצל את המילה לתווים בודדים
# 2. עברו על כל תו בלולאה
# 3. הדפיסו כל תו באמצעות print()
# 4. ספרו כמה פעמים מופיעה 'a'

# הציגו את מספר ההופעות של 'a'
cat("Count of 'a': ", count_a, "\n", sep = "")
quiz iconבחנו את עצמכם

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

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

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