文字列操作

文字列の操作方法

ここではR標準のbaseパッケージを使用して、文字列を操作する方法を紹介する。 もう少し高度な文字列操作をするには、stringrパッケージの使用をおすすめする。

文字列を結合する

文字列を結合するには、paste()もしくはpaste0()関数を使用する。paste()の初期値では、文字列を結合するときに、スペースでつなぐが、paste0では、スペースなしに結合する。

paste(..., sep, collaspse)
paste0(..., collaspse)
引数 説明 初期値
結合するベクトル
sep 区切り文字 " "
collapse 区切り文字 NULL

生成されるベクトルを結合させて、一つの文字列にするためにはcollapseで区切り文字を指定する。

文字列同士を結合する

> paste("This", "is", "a", "pen.")
[1] "This is a pen."
> paste0("This", "is", "a", "pen.")
[1] "Thisisapen."

ベクトルに文字列を結合する

> Month <- c("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")
> paste("Month:", Month)
 [1] "Month: Jan" "Month: Feb" "Month: Mar" "Month: Apr" "Month: May"
 [6] "Month: Jun" "Month: Jul" "Month: Aug" "Month: Sep" "Month: Oct"
[11] "Month: Nov" "Month: Dec"

ベクトル同士を結合する

> Month_J <- c("1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月")

> paste(Month, Month_J, sep=": ")
 [1] "Jan: 1月"  "Feb: 2月"  "Mar: 3月"  "Apr: 4月"  "May: 5月"  "Jun: 6月" 
 [7] "Jul: 7月"  "Aug: 8月"  "Sep: 9月"  "Oct: 10月" "Nov: 11月" "Dec: 12月"

> paste(Month, Month_J, sep=": ", collapse="; ")
[1] "Jan: 1月; Feb: 2月; Mar: 3月; Apr: 4月; May: 5月; Jun: 6月; Jul: 7月; Aug: 8月; Sep: 9月; Oct: 10月; Nov: 11月; Dec: 12月"

文字列を置換する

文字列を置換するにはsub()関数やgsub()関数を使用する。sub()関数は最初に一致した文字列のみを置換するが、gsub()関数は一致するすべての文字列を置換する。

sub(pattern, replacement, x)
gsub(pattern, replacement, x)
引数  説明 
pattern 置換前の文字列 
replacement 置換後の文字列 
x 文字列を検索するベクトル 
> data <- c("ID", "Personal_ID", "Review_ID", "Sequence_ID", "Published_day_month_year")
> sub("_", "", data)
[1] "ID" "PersonalID" "ReviewID" "SequenceID" "Publishedday_month_year"
> gsub("_", "", data)
[1] "ID" "PersonalID" "ReviewID" "SequenceID" "Publisheddaymonthyear"

文字列の空白を削除する

上記のgsub()関数を使って、スペースを潰す。

gsub(" ", "", x)
> str <- c("   a    ", "   b  &  c   ", "   d e f   ")
> gsub(" ", "", str)
[1] "a"   "b&c" "def"

## 文字列を変換する

小文字に変換する

tolower()

大文字に変換する

toUpper()

文字列を分割する

文字列を分割するには、strsplit()関数を使用する。 返り値は、リスト。

strsplit(x, split)
引数  説明 
x 文字列のベクトル 
split 文字列を分解を指定する正規表現。 
> strsplit("No.1: This is a pen. I bought it.", "\\.")
[[1]]
[1] "No" "1: This is a pen" " I bought it" 

スペースごとに分割する

区切り文字として、スペースを指定する。

> fruits <- "apple orange mango banana"
> strsplit(fruits, " ")
[[1]]
[1] "apple" "orange" "mango" "banana"

ピリオド・ドットごとに分割する

正規表現でピリオド・ドットは、任意の一文字となってしまう。そのため、strsplit()の第二引数を"."としても、うまく分割してくれない。 それを避けるためにバックスラッシュ\でエスケープし、"\\."とする。

> strsplit("ABC.123", "\.")

一文字ずつ分解する

指定文字列を""で行う

> strsplit("I'm a perfect human", "")
[[1]]
[1] "I" "'" "m" " " "a" " " "p" "e" "r" "f" "e" "c" "t" " " "h" "u" "m" "a" "n"

分割後に、ベクトル化する

二重ブラケット[[]]を使用する。

> strsplit(Country, ",")[[1]]
[1] "Japan" " USA" " Germany" " UK"

unlist()関数を使用する

> Tissue <- "heart, skeletal muscle, placenta, lung"
> strsplit(Tissue, ",") %>% unlist
[1] "heart" " skeletal muscle" " placenta" " lung"

See Also

ベクトル

順序付きの同一データ型の集まり

ベクトルの集合演算

ベクトルの和集合・積集合・差集合・相当な集合

標準入力

入力値の読み込み

サンプル抽出

データを取り出す

オブジェクトの比較

オブジェクトが同じかどうか調べる