stringr

Author

データサイエンス関連基礎調査WG

Published

August 1, 2025

パッケージの概要

stringrは、文字列を操作するための関数群を提供するパッケージです。また、このパッケージは、Rでモダンな分析環境を構築するためのパッケージ群である「tidyverse」に含まれています。

library(stringr)
library(dplyr) #パイプ処理の例に利用

Attaching package: 'dplyr'
The following objects are masked from 'package:stats':

    filter, lag
The following objects are masked from 'package:base':

    intersect, setdiff, setequal, union

R標準の関数との比較

R標準の関数と比較すると、stringrパッケージの関数は、基本的には関数の名称がstrから始まり、最初の引数は文字列になるなど、命名規則・引数の取扱いに一貫性があります。

# 比較するベクトルを作成
x <- c("apple", "banana", NA, "", "あいう") 

# strから始まる関数がstringrパッケージの関数
# 文字数の確認
str_length(x)
[1]  5  6 NA  0  3
nchar(x)
[1]  5  6 NA  0  3
# 小文字(a)を大文字(A)に変換
str_replace_all(x, "a", "A")
[1] "Apple"  "bAnAnA" NA       ""       "あいう"
gsub("a", "A", x)
[1] "Apple"  "bAnAnA" NA       ""       "あいう"

また、stringrパッケージはtidyverseに含まれるパッケージであるため、パイプ処理(%>%)と一緒に利用しやすくなっています。

# 比較するベクトルを作成
x <- c("apple", "banana", NA, "", "あいう") 

# パイプ処理の例(R標準)
x %>%
  { gsub("a", "A", .) }
[1] "Apple"  "bAnAnA" NA       ""       "あいう"
# パイプ処理の例(stringr)
# 最初の引数が文字列となるため、自然な記載が可能
x %>%
  str_replace_all("a", "A")
[1] "Apple"  "bAnAnA" NA       ""       "あいう"

関数の紹介

stringrパッケージの関数の実行例をいくつか紹介します。

# 文字列の一部を抽出
str_sub("abcdef", 2, 4)
[1] "bcd"
# 文字列の連結
str_c("a", "b")
[1] "ab"
# 指定したパターンに合致するかを判定。正規表現も利用可能
X <- c("apple", "banana")
str_detect(X, "a")  # 文字列にaが含まれるかどうかを判定
[1] TRUE TRUE
str_detect(X, "^a") # 文字列がaから始まるかどうかを判定
[1]  TRUE FALSE
# 指定したパターンに合致する最初の文字を置換
str_replace("apple", "p", "P")
[1] "aPple"
# 指定した区切り文字で分割
str_split("a,b,c", ",")
[[1]]
[1] "a" "b" "c"
# 文字列の先頭・末尾の空白を削除
str_trim(" hello world ")
[1] "hello world"
# 大文字に変換
str_to_upper("abc")
[1] "ABC"