R×stringr::str_replace 文字列を別の文字列に一つだけ置き換える

R言語のstringrパッケージに含まれているstr_replace()関数について解説します。この関数は、「文字列の中で最初に見つかった1箇所だけを別の文字列に置換したい」ときに使える関数です。基本関数のsub()と同じ役割ですが、より直感的に書けるのが特徴です。

stringrパッケージは、文字列データを操作するための強力で便利な関数を多く取り扱っています。また、Rのデータサイエンス向け主要パッケージ群であるtidyverseパッケージにも含まれています。

概要

str_replace()は、文字列を別の文字列に一つだけ置き換えるための関数です。

使い方


str_replace(string, pattern, replacement)

引数

string

文字ベクトルまたは文字ベクトルに変換可能なものを指定します。

pattern

検索するパターンを指定します。
デフォルトの解釈は、stringi::about_search_regex で説明されている正規表現です。regex()でオプションを制御します。
fixed()を使用して、固定文字列 (つまり、バイトのみを比較) を一致させます。これは高速ですが、近似値です。一般的に、人間のテキストを一致させるには、指定されたロケールの文字一致規則を尊重するcoll()が適しています。

replacement

置換値する文字列を指定します。
通常は単一の文字列ですが、文字列またはパターンと同じ長さのベクトルにすることもできます。\1、\2などの形式の参照は、一致したグループ(⁠()によって作成)の内容に置き換えられます。
あるいは、関数を指定します。この関数は、一致ごとに (右から左へ)1回呼び出され、その戻り値を使用して一致が置き換えられます。

戻り値

string/pattern/replacementと同じ長さの文字ベクトルです。

使用例

準備

あらかじめ、tidyverseパッケージまたはstringrパッケージを読み込んでおきます。


# library(tidyverse)でもよい
library(stringr)

別の文字列に一つだけ置き換える

文字列「りんご、ごりら、らっぱ。りんご、ごりら、らっぱ。」で「ごりら」を「ごまあぶら」に一つだけ置き換えるには次のようにします。


str_replace("りんご、ごりら、らっぱ。りんご、ごりら、らっぱ。", "ごりら", "ごまあぶら")

[1] "りんご、ごまあぶら、らっぱ。りんご、ごりら、らっぱ。"

参考文献