文字列ベクトルの結合
複数の文字列を連結して一つの文字列にするには関数 paste() を用いる.引数がベクトルならばそれぞれの要素ごとに連結することになる.
paste("May I", "help you ?") [1] "May I help you ?" paste(month.abb, 1:12, c("st", "nd", "rd", rep("th",9)) ) [1] "Jan 1 st" "Feb 2 nd" "Mar 3 rd" "Apr 4 th" "May 5 th" "Jun 6 th" [7] "Jul 7 th" "Aug 8 th" "Sep 9 th" "Oct 10 th" "Nov 11 th" "Dec 12 th" |
R に標準で用意されている定数は LETTERS (アルファベットの大文字) ,letters (アルファベットの小文字) ,month.abb (月の名前の略称) ,month.name (月の名前) ,pi (円周率) の 5 つがある.
2 つの文字列を 1 つに結合する際,間に挟む文字列は引数 sep で指定する (空文字列 "" を与えれば何も挟まずにつなぐ) .また,ベクトルの各要素を一つにつなげた文字列を作りたいときは,引数 collapse に間に挟む文字 (列) を指定すればよい(sep と同じように 空 "" で与えてもよい).
paste("/usr", "local", "bin", sep = "/") # / を間に挟んでつなぐ [1] "/usr/local/bin" ( x <- paste(1:4) ) [1] "1" "2" "3" "4" paste(x, collapse="abc" ) [1] "1abc2abc3abc4" paste(x, collapse="" ) [1] "1234" |
部分文字列の取り出し
部分文字列を取り出す際は,関数 substring() を用いればよい.使い方は以下の通り.
substring("abcdefg", 2, 5) # substring(文字列 , 要素の最初の位置, 要素の最後の位置) [1] "bcde" |
文字列を R の命令として実行
関数 eval(parse(text="文字列")) とすればよい.他にも関数 eval.parent(parse(text="文字列")) が用意されている.
a <- numeric(5); x <- 1:5 for(i in x) eval(parse(text=paste("a[",i,"] <- 10", sep="") )) a [1] 10 10 10 10 10 |
他にも文字列に関する関数が多数用意されている.
記号 |
charmatch() |
chartr() |
grep(), match() |
gsub(), sub() |
意味 |
部分マッチング |
文字の置換 |
パターンマッチ |
置換 |
記号 |
nchar() |
pmatch() |
toupper() |
tolower() |
意味 |
文字数(バイト数) |
部分マッチング |
大文字に置換 |
小文字に置換 |
記号 |
strsplit() |
strwrap() |
substr() |
|
意味 |
正規表現による文字列の分割 |
文字列(英文)の分割 |
部分文字列の切り出し |
Back to R