テキストの置換
CoddyのRジャーニー「ロジックとフロー」セクションの一部。レッスン 5/64。
sub(pattern, replacement, x)は各文字列内の最初の一致を置換し、gsub()はすべての一致を置換します。grepl()と同様に、fixed = TRUEはパターンをプレーンテキストとして扱います。
date <- "2024-01-15"
print(sub("-", "/", date, fixed = TRUE))
print(gsub("-", "/", date, fixed = TRUE))出力:
[1] "2024/01-15"
[1] "2024/01/15"空の文字列に置き換えると、一致した部分が削除されます。これにより、数値に変換する前にテキストを整えます。
price <- "$1,299.00"
clean <- gsub(",", "", sub("$", "", price, fixed = TRUE), fixed = TRUE)
print(clean)
print(as.numeric(clean) * 2)出力:
[1] "1299.00"
[1] 2598fixed = TRUE なしでは、パターンは正規表現になります。便利な要素を2つ紹介します。[0-9] は任意の数字にマッチし、+ はその直前の要素を1回以上繰り返すため、" +" はスペースの連続にマッチします。
msg <- "call me at 555 0199"
print(gsub(" +", " ", msg))
print(gsub("[0-9]", "#", msg))出力:
[1] "call me at 555 0199"
[1] "call me at ### ####"他の文字列関数と同様に、sub() と gsub() はベクトルのすべての要素に対して機能します:
codes <- c("a-1", "b-22", "c-3")
print(gsub("-", "", codes, fixed = TRUE))
print(sub("-[0-9]+", "", codes))出力:
[1] "a1" "b22" "c3"
[1] "a" "b" "c"チャレンジ
簡単slugify(title)を完成させてください。タイトルを小文字に変換し、先頭と末尾の空白を削除し、空白の連続をすべて1つの-に置き換えて返します。 Hello World はhello-worldになります。
提供されたコードはタイトルを読み込み、返された値を出力します。
自分で試してみよう
slugify <- function(title) {
# ここにコードを書いてください
title
}
# 提供された入出力コード:そのままにしておいてください
input <- suppressWarnings(readLines(file("stdin")))
cat(slugify(input[1]), sep = "\n")
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: Rオンラインコンパイラ