R×stringr::str_sub 位置を使用して部分文字列を取得および設定する

R言語のstringrパッケージに含まれているstr_sub()関数について解説します。この関数は、「文字列の『〇文字目から△文字目まで』を指定して、ピンポイントで切り出したい(または置換したい)」ときに使える関数です。マイナスの数値を指定すると「後ろから数えて〇文字目」という指定ができるため、非常に直感的で使いやすいのが最大の特徴です。

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

概要

str_sub()は、位置を使用して部分文字列を取得および設定するための関数です。

使い方


str_sub(string, start = 1L, end = -1L)

str_sub(string, start = 1L, end = -1L, omit_na = FALSE) <- value

引数

string

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

start, end

抽出する文字の範囲(両端を含む)を定義する整数ベクトルのペアを指定します。
正の値は文字列の左から数え、負の値は右から数えます。つまり、文字列が"abcdef"の場合、1は"a"を、-1は"f"を表します。
あるいは、ベクトルのペアの代わりに、startに行列を渡すこともできます。行列は、startとend、またはstartとlengthというラベルの付いた2つの列を持つ必要があります。これにより、str_sub()はstr_locate()などの出力を直接処理します。

omit_na = FALSE

単一の論理値を指定します。
TRUEの場合、指定された引数のいずれかに欠損値がある場合は、入力は変更されません。

戻り値

string/start/endと同じ長さの文字ベクトルを返します。
endがstartより前にある場合、またはstartがstringの範囲外にある場合、対応する出力は空文字列になります。

使用例

準備

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


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

位置を使用して部分文字列を取得する

文字列「abcde」内で文字列「bcd」を取得するには次のようにします。


str_sub("abcde", 2, 4)

[1] "bcd"

位置を使用して部分文字列を設定する

文字列「abcde」内で文字列「ab」を「AB」に設定するには次のようにします。


x <- "abcde"
str_sub(x, 1, 2) <- "AB"
x

[1] "ABcde

参考文献