R言語のstringrパッケージに含まれているstr_replace()関数について解説します。この関数は、「文字列の中で最初に見つかった1箇所だけを別の文字列に置換したい」ときに使える関数です。基本関数のsub()と同じ役割ですが、より直感的に書けるのが特徴です。
stringrパッケージは、文字列データを操作するための強力で便利な関数を多く取り扱っています。また、Rのデータサイエンス向け主要パッケージ群であるtidyverseパッケージにも含まれています。
概要
str_replace()は、文字列を別の文字列に一つだけ置き換えるための関数です。
使い方
str_replace(string, pattern, replacement)
引数
文字ベクトルまたは文字ベクトルに変換可能なものを指定します。
検索するパターンを指定します。
デフォルトの解釈は、stringi::about_search_regex で説明されている正規表現です。regex()でオプションを制御します。
fixed()を使用して、固定文字列 (つまり、バイトのみを比較) を一致させます。これは高速ですが、近似値です。一般的に、人間のテキストを一致させるには、指定されたロケールの文字一致規則を尊重するcoll()が適しています。
置換値する文字列を指定します。
通常は単一の文字列ですが、文字列またはパターンと同じ長さのベクトルにすることもできます。\1、\2などの形式の参照は、一致したグループ(()によって作成)の内容に置き換えられます。
あるいは、関数を指定します。この関数は、一致ごとに (右から左へ)1回呼び出され、その戻り値を使用して一致が置き換えられます。
戻り値
string/pattern/replacementと同じ長さの文字ベクトルです。
使用例
準備
あらかじめ、tidyverseパッケージまたはstringrパッケージを読み込んでおきます。
# library(tidyverse)でもよい
library(stringr)
別の文字列に一つだけ置き換える
文字列「りんご、ごりら、らっぱ。りんご、ごりら、らっぱ。」で「ごりら」を「ごまあぶら」に一つだけ置き換えるには次のようにします。
str_replace("りんご、ごりら、らっぱ。りんご、ごりら、らっぱ。", "ごりら", "ごまあぶら")
[1] "りんご、ごまあぶら、らっぱ。りんご、ごりら、らっぱ。"