R言語のstringrパッケージに含まれているstr_wrap()関数について解説します。この関数は、「長い文字列を文字数(幅)ごとに自動で改行(\n)を挟み、きれいに段落整形(折り返し)したい」ときに使える関数です。単に一定の文字数で折り返すのではなく、単語の区切り(スペースなど)を考慮してスマートに改行してくれるのが大きな特徴です。
stringrパッケージは、文字列データを操作するための強力で便利な関数を多く取り扱っています。また、Rのデータサイエンス向け主要パッケージ群であるtidyverseパッケージにも含まれています。
概要
str_wrap()は、単語を段落に折り返して整然とした書式にするための関数です。Knuth-Plassアルゴリズムを用いて、行の「ギザギザ感」(つまり、行の長さのばらつき)を最小限に抑えながら、単語を段落に折り返します。
使い方
str_wrap(string, width = 80, indent = 0, exdent = 0, whitespace_only = TRUE)
引数
string
文字ベクトルまたは文字ベクトルに変換可能なものを指定します。
width = 80
対象となる行の幅(文字数)を示す正の整数を指定します。
幅が1以下の場合、各単語は1行に分割されます。
indent = 0
最初の行(indent)のインデントを示す非負の整数を指定します。
exdent = 0
最初の行以降の行(exdent)のインデントを示す非負の整数を指定します。
whitespace_only = TRUE
真偽値を指定します。
- TRUE(デフォルト)の場合、空白部分でのみ折り返されます。
- FALSE の場合、単語に含まれない文字(例: /、-)で改行できます。
戻り値
文字列と同じ長さの文字ベクトルを返します。
使用例
準備
あらかじめ、tidyverseパッケージまたはstringrパッケージを読み込んでおきます。
# library(tidyverse)でもよい
library(stringr)
文字列を折り返す
文字列「ゆきやこんこ あられやこんこ ふってはふっては ずんずんつもる」を10文字ずつ段落にするには次のようにします。
str_wrap("ゆきやこんこ あられやこんこ ふってはふっては ずんずんつもる", 10)
[1] "ゆきやこんこ\nあられやこんこ\nふってはふっては\nずんずんつもる"