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
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標準の関数と比較すると、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"