פיצול וחיבור
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-R של Coddy. שיעור 3 מתוך 64.
strsplit(x, split) חותכת מחרוזת בכל מפריד. היא מחזירה רשימה עם וקטור תווים אחד לכל מחרוזת קלט, לכן יש להשתמש ב-[[1]] כדי לקבל את החלקים של מחרוזת יחידה.
csv <- "red,green,blue"
parts <- strsplit(csv, ",")[[1]]
print(parts)
print(length(parts))פלט:
[1] "red" "green" "blue"
[1] 3paste() פועלת בכיוון ההפוך. עם collapse, היא מחברת את איברי וקטור אחד למחרוזת יחידה, כאשר הטקסט collapse מופיע ביניהם. sep מופיע בין הארגומנטים, איבר אחר איבר.
words <- c("one", "two", "three")
print(paste(words, collapse = "-"))
print(paste(words, 1:3, sep = "_"))פלט:
[1] "one-two-three"
[1] "one_1" "two_2" "three_3"בטקסט שמתקבל מהקלט יש לעיתים קרובות רווחים סביב המפרידים. trimws() מסירה את הרווחים בתחילתו ובסופו של כל איבר:
raw <- " apples , pears,plums "
items <- trimws(strsplit(raw, ",")[[1]])
print(items)
print(paste(rev(items), collapse = " | "))פלט:
[1] "apples" "pears" "plums"
[1] "plums | pears | apples"הפעלת strsplit() על וקטור מחזירה איבר אחד ברשימה לכל מחרוזת, כך שכל שורת קלט שומרת על החלקים שלה:
lines <- c("a,b", "c,d,e")
parts <- strsplit(lines, ",")
print(length(parts))
print(parts[[2]])פלט:
[1] 2
[1] "c" "d" "e"אתגר
קלהשלם את hashtags(line). השורה מכילה תגיות המופרדות בפסיקים, וייתכנו רווחים סביבן. החזר מחרוזת אחת שבה לפני כל תגית מופיע #, והתגיות מופרדות ברווחים בודדים: r, data ,stats הופך ל־#r #data #stats.
הקוד שסופק קורא את השורה ומדפיס את הערך שהוחזר.
נסו בעצמכם
hashtags <- function(line) {
# כתבו את הקוד שלכם כאן
line
}
# קוד קלט/פלט שסופק: השאירו אותו כפי שהוא
input <- suppressWarnings(readLines(file("stdin")))
cat(hashtags(input[1]), sep = "\n")
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1מחרוזות לעומק
תת־מחרוזות עם substr()עיצוב עם sprintf()פיצול וחיבורחיפוש במחרוזותהחלפת טקסטסיכום – בונה שמות משתמש4מטריצות
יצירת מטריצותאינדוקס מטריצותסיכומי שורות ועמודותאריתמטיקה של מטריצותסיכום – תרשים מקומות ישיבהתרגלו בעצמכם: קומפיילר R אונליין