R言語で、位置を使用して部分文字列を取得する方法について解説します。文字列の操作には、tidyverseパッケージに含まれているstringrパッケージを使用するのが便利です。ここでは、stringrパッケージのstr_sub_all()を使用した方法についてお伝えします。
str_sub_all()の概要
str_sub_all()は、位置を使用して部分文字列を取得するための関数です。
str_sub_all()の使い方
str_sub_all(string, start = 1L, end = -1L)
str_sub_all()の引数
string
文字ベクトルまたは文字ベクトルに変換可能なものを指定します。
start, end
抽出する文字の範囲(両端を含む)を定義する整数ベクトルのペアを指定します。
正の値は文字列の左から数え、負の値は右から数えます。つまり、文字列が”abcdef”の場合、1は”a”を、-1は”f”を表します。
あるいは、ベクトルのペアの代わりに、start に行列を渡すこともできます。行列は、startとend、またはstartとlengthというラベルの付いた2つの列を持つ必要があります。これにより、str_sub_all()はstr_locate()などの出力を直接処理します。
omit_na = FALSE
単一の論理値を指定します。
TRUEの場合、指定された引数のいずれかに欠損値がある場合は、入力は変更されません。
str_sub_all()の戻り値
string と同じ長さのリストを返します。
各要素はstart/endと同じ長さの文字ベクトルです。
endがstartより前にある場合、またはstartがstringの範囲外にある場合、対応する出力は空文字列になります。
準備
あらかじめ、tidyverseパッケージを読み込んでおきます。
library(tidyverse)
使用例
文字列「abcde」内で文字列「bcd」を取得するには次のようにします。
str_sub_all("abcde", 2, 4)
[[1]]
[1] "bcd"
2つの文字列「abcde」「あいうえお」のそれぞれに対して、1文字目から2文字目と4文字目から5文字目を取得するには次のようにします。
str_sub_all(c("abcde", "あいうえお"), c(1, 4), c(2, 5))
[[1]]
[1] "ab" "de"
[[2]]
[1] "あい" "えお"