「大人の教養・知識・気付き」を伸ばすブログ

一流の大人(ビジネスマン、政治家、リーダー…)として知っておきたい、教養・社会動向を意外なところから取り上げ学ぶことで“気付く力”を伸ばすブログです。目下、データ分析・語学に力点を置いています。

MENU

プログラムとしてのRを学ぶ(その11/16)

 \mathrm{R}をプログラムとして見たときに注意・検討すべきところを学んでおきたい、ということで

を読んでいく。

11. 文字列操作

 \mathrm{R}は文字列操作のための様々なユーティリティを持っている。

11.1 文字列操作関数の概要

11.1.1 grep()

 \mathrm{grep(pattern,x)}は文字列のベクトル\mathrm{x}から指定された部分文字列\mathrm{pattern}を探索する。
 \mathrm{x}に要素がn個あるとき、この関数は長さが最大でnであるようなベクトルを返す。

grep("Pole", c("Equator", "North Pole", "South Pole"))
grep("pole", c("Equator", "North Pole", "South Pole"))
11.1.2 nchar()

 \mathrm{nchar}()は文字列xの長さを返す。文字モードでないxに対しては予想できない値を返す。

11.1.3 paste()

 \mathrm{paste}()は複数の文字列を連結しその結果を1つの文字列として返す。デフォルトでは、\mathrm{paste}()は文字列間に半角空白を挿入して結合する。結合に用いる文字列を変える場合、オプション引数である\mathrm{sep}にその値を与える。
 なお\mathrm{paste0}()\mathrm{paste(...,sep="")}と同じである。

11.1.4 sprintf()

 \mathrm{sprintf}()は指定された書式で構成要素から文字列を組み立てる。

i <- 8
s <- sprintf("The square of %d is %d",i,i^2)
print(s)
11.1.5 substr(), substring()

 \mathrm{substr}()(もしくはこれと等価だが\mathrm{substring}())は指定された文字列x内の指定された文字位置範囲(\mathrm{start}:\mathrm{stop})の部分文字列を返す。

substring("Equator",3,5)
11.1.6 strsplit()

 \mathrm{strsplit(x, split)}は文字列xを引数\mathrm{split}で指定した文字列で分割した部分文字列の\mathrm{R}のリストを返す。

strsplit("6-16-2011",split="-")
11.1.7 regexpr(),grepexpr()

 \mathrm{regexpr(pattern,text)}は、\mathrm{text}内に出現する最初の\mathrm{pattern}の文字位置を見つける。
 \mathrm{gregexpr(pattern,text)}は、すべて文字位置を見つける。

11.2 正規表現

 正規表現は一種のワイルドカードである。
 たとえば右記のような例がある。メタ文字.は任意の1つの文字列を指す。[.]は.(.には複数個の文字を指定可能。)を含む文字列を指定する。

# aまたはuを含む任意の文字列の番号を返す
grep("[au]", c("Equator","North Pole","South Pole"))

# o+(任意の文字列)+eという3文字から成る部分文字列をもつ文字列の番号を返す
grep("[o.e]", c("Equator","North Pole","South Pole"))

 メタ文字をエスケープするにはバックスラッシュ1文字をエスケープしたい文字の前に用いる*1

# ピリオド.を含む文字列を探す
grep("\\.",c("abc","de","f.g"))

*1:ただしバックスラッシュ自体もエスケープする必要があるため、実際には2つ。

プライバシーポリシー お問い合わせ