[R言語]文字列(string)の特定の文字の位置が何番目か検索するには?

R言語

どうも、ちょげ(@chogetarou)です。

文字列(string)の特定の文字の位置が何文字目か検索する方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

文字列(string)の特定の文字の位置が何番目か検索する方法は、2つあります。

gregexpr()

ひとつは、gregexpr()を使う方法です。

まず、unlist()を呼び出します。

unlist()の引数でgregexpr()を呼び出します。

gregexpr()の第1引数に特定の文字、第2引数に対象の文字列を指定します。

#text=対象の文字列, char=特定の文字
result <- unlist(gregexpr(char, text))

上記のunlist()は、対象の文字列(string)の特定の文字の全ての位置を返します。

もし、特定の文字を正規表現で指定したい場合は、第1引数にパターンを指定します。

#pattern=正規表現
result <- unlist(gregexpr(pattern, text))

使用例

text <- "abcadaef"

result <- unlist(gregexpr("a", text))

result
出力:
> result
[1] 1 4 6

stringr

もうひとつは、「stringr」を使う方法です。

まず、「stringr」を導入します。

library(stringr)

str_locate()を呼び出します。

str_locate()の第1引数に文字列、第2引数に特定の文字を指定します。

#text=対象の文字列, char=特定の文字
result <- str_locate(text, char)

上記のstr_locate()は、対象の文字列(string)の特定の文字の最初の位置を返します。

もし、文字列(string)の特定の文字の全ての位置を取得したい場合は、str_replcae()をstr_replace_all()に置き換えます。

#特定の文字の全ての位置を取得
result <- str_locate_all(text, char)

もし、特定の文字を正規表現で指定したい場合は、第2引数にパターンを指定します。

#pattern=正規表現
result <- str_locate(text, pattern)

使用例1

library(stringr)

text <- "abcadaef"

result <- str_locate(text, "a")

result
> result

     start end
[1,]     1   1

使用例2

library(stringr)

text <- "abcadaef"

result <- str_locate_all(text, "a")

result
出力:
> result
[[1]]
     start end
[1,]     1   1
[2,]     4   4
[3,]     6   6

まとめ

文字列(string)の特定の文字の位置が何番目か検索する方法は、次の2つです。

  • gregexpr()を使う方法
    result <- unlist(gregexpr(char, text))
  • stringr()を使う方法
    result <- str_locate(text, char)

コメント

タイトルとURLをコピーしました