このパッケージがすごい2014: stringr
library(stringr)

この記事はR Advent Calender 2014@Qiita1日目の記事「このパッケージがすごい2014」の一部です

stringr: Make it easier to work with strings

Rでは文字列操作を扱う関数がいくつかありますが、知識がないと複雑でわかりにくいです。そんな文字列操作を、統一的な表現により簡単に扱えるようにしたパッケージがstringrです。

strinrパッケージの引数は基本的にstringpatternを指定します。patternには正規表現を用いることが可能です。

簡単な文字列操作

複数の文字列を結合して1つの文字列にする

paste関数と似ていますが、文字と文字の間は空白でつながらないのが特徴です

str_c("ABC", "456", "ghi")
## [1] "ABC456ghi"
paste("ABC", "456", "ghi")
## [1] "ABC 456 ghi"

文字列の長さを返す

str_length("ABC")
## [1] 3

文字列からその一部を抽出

hw <- "Hello World!"
str_sub(hw, start = 3, end = 5)
## [1] "llo"
str_sub(hw, start = -6)
## [1] "World!"

文字列を反復させる

str_dup(hw, times = 2)
## [1] "Hello World!Hello World!"

パターンマッチ

パターンと適合するかどうかを判定

message <- c("Hello :)", "Goodbye x(")
str_detect(message, ":)")
## [1]  TRUE FALSE

マッチする場合にはTRUEを返します

パターンとマッチする箇所を返す

str_locate(message, "o")
##      start end
## [1,]     5   5
## [2,]     2   2

パターンにマッチしない部分を取り除く

shopping_list <- c("apples x4", "flour", "sugar", "milk x2")
str_extract(shopping_list, "[a-z]+")
## [1] "apples" "flour"  "sugar"  "milk"

パターンにマッチした部分を置換する

str_replace(message, "[[:punct:]]", "!") # 置換されるのは文字列の最初のみ
## [1] "Hello !)"   "Goodbye x!"
str_replace_all(message, "[[:punct:]]", "!") # 文字列内で条件に合う部分をすべて置換
## [1] "Hello !!"   "Goodbye x!"

2015年は正規表現をきちんと勉強したいですね...

参考