分割と結合
CoddyのRジャーニー「ロジックとフロー」セクションの一部。レッスン 3/64。
strsplit(x, split)は、各区切り文字で文字列を分割します。入力文字列ごとに1つの文字ベクトルを含むリストを返すため、1つの文字列の断片を取得するには[[1]]を使用します。
csv <- "red,green,blue"
parts <- strsplit(csv, ",")[[1]]
print(parts)
print(length(parts))出力:
[1] "red" "green" "blue"
[1] 3paste()は逆方向に動作します。collapseを使うと、1つのベクトルの要素を、それらの間にcollapseのテキストを挟んで、1つの文字列に結合します。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() は文字列ごとにリスト要素を1つ返すため、入力された各行はそれぞれの要素を保持します:
lines <- c("a,b", "c,d,e")
parts <- strsplit(lines, ",")
print(length(parts))
print(parts[[2]])出力:
[1] 2
[1] "c" "d" "e"チャレンジ
簡単hashtags(line)を完成させてください。行には、前後にスペースが含まれる場合がある、カンマで区切られたタグが含まれています。各タグの前に#を付け、単一のスペースで区切った1つの文字列を返してください。 r, data ,statsは#r #data #statsになります。
提供されたコードは行を読み取り、返された値を出力します。
自分で試してみよう
hashtags <- function(line) {
# ここにコードを書いてください
line
}
# 提供された入出力コード:そのままにしておいてください
input <- suppressWarnings(readLines(file("stdin")))
cat(hashtags(input[1]), sep = "\n")
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: Rオンラインコンパイラ