Menu
CoddyTech

分割と結合

CoddyのRジャーニー「ロジックとフロー」セクションの一部。レッスン 3/64。

strsplit(x, split) は、各区切り文字で文字列を分割します。入力文字列ごとに1つの文字ベクトルを含むリストを返すため、単一の文字列の分割結果を取得するには [[1]] を使います。

csv <- "red,green,blue"
parts <- strsplit(csv, ",")[[1]]
print(parts)
print(length(parts))

出力:

[1] "red"   "green" "blue" 
[1] 3

paste()は逆の動作をします。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"
challenge icon

チャレンジ

簡単

hashtags(line)を完成させてください。lineには、カンマで区切られたタグが含まれており、タグの前後にはスペースがある場合があります。各タグの前に#を付け、単一のスペースで区切った1つの文字列を返してください。 r, data ,statsは#r #data #statsになります。

与えられたコードは行を読み取り、返された値を出力します。

自分で試してみよう

hashtags <- function(line) {
  # ここにコードを書いてください
  line
}

# 用意されている入出力コード:そのままにしてください
input <- suppressWarnings(readLines(file("stdin")))
cat(hashtags(input[1]), sep = "\n")
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックとフローのすべてのレッスン

自分で練習してみよう: Rオンラインコンパイラ