統計ソフトRは、統計処理やグラフの描画でよく用いられます。しかし、色々なことに活用していると、「文字列処理ができると便利だな」と思うことがあります。統計ソフトRには、文字列処理のための便利な関数が準備されているので、代表的な関数についてまとめたいと思います。

Rの文字列処理
文字列の分割
strsplit
関数で分割します。対象となる文字列と分解パターンを指定します。分割パターンは、文字を直接指定したり、正規表現・文字列クラスなどを指定できます。分割後データはリストで返されます。
空白を文字で指定
パターンを文字列で指定します。
R> strsplit("bioinfo-dojo kumazou", ' ') [[1]] [1] "bioinfo-dojo" "kumazou" words <- strsplit("bioinfo-dojo kumazou", ' ') words[[1]][1] # 分割文字列にアクセス [1] "bioinfo-dojo" words[[1]][2] # 分割文字列にアクセス [1] "kumazou"
正規表現で指定(半角スペース・タブ・改行など)
パターンを正規表現で指定します。バックスラッシュを2重化します。
R> strsplit("bioinfo-dojo kumazou", '\\s') [[1]] [1] "bioinfo-dojo" "kumazou"
文字列クラスでを指定(半角スペース・タブ・改行など)
パターンを文字列クラスで指定します。括弧([)を2重化します。
R> strsplit("bioinfo-dojo kumazou", '[[:space:]]') [[1]] [1] "bioinfo-dojo" "kumazou"
組み合わせ
パターンを組み合わせます。OR(|)を使います。
R> strsplit("bioinfo-dojo kumazou", '[[:punct:]]|[[:space:]]') # スペースを入れない [[1]] [1] "bioinfo" "dojo" "kumazou"
R> strsplit("bioinfo-dojo kumazou", '-| ') [[1]] [1] "bioinfo" "dojo" "kumazou"
部分文字列
文字列から部分文字列を取り出すときは、substr
関数かsubstring
関数を利用します。対象となる文字列と開始位置・終了位置を指定します。文字列置換も可能です。但し、対象となる文字列を一度変数に格納して与える必要があるようです。
部分文字列 抽出
R> substr("bioinfo-dojo kumazou", 1, 12) [1] "bioinfo-dojo" substr(c("bioinfo-dojo1 kumazou", "bioinfo-dojo2 kumazou"), 1, 13) [1] "bioinfo-dojo1" "bioinfo-dojo2"
置換
R>
substr(message, 1, 12) <- "Bioinfo-Dojo"
message
[1] "Bioinfo-Dojo kumazou"
message <- "bioinfo-dojo kumazou"
substring(message, 1) <- "bioinfo-dojo-dojo kumazou"
message
[1] "bioinfo-dojo-dojo ku" # 長さに対応した部分のみ置き替えられる
文字列置換
文字列の置換を行う場合、sub
関数かgsub
関数を利用します。前者は最初に見つかった部分を置換、後者は見つかった部分を全て置換します。
R> sub('o', 'O', "bioinfo-dojo") [1] "biOinfo-dojo"
R> gsub('o', 'O', "bioinfo-dojo") [1] [1] "biOinfO-dOjO"
文字列検索(マッチ)
文字列のパターンマッチを行う場合、grep
関数やmatch
関数を利用します。前者は部分文字列の検索、後者は複数パターンを完全一致で検索します。
R>
grep("bio", c("bioinfo-dojo", "dojo", "kumazou"))
[1] 1 # "bio" 1つ目("bioinfo-dojo")でヒット
R>
match(c("bio", "dojo"), c("bioinfo-dojo", "dojo", "kumazou"))
[1] NA 2 # "bio"完全一致はなし、"dojo"2つ目に完全一致
文字列連結
文字列の連結を行う場合、paste
関数を利用します。文字列を直接連結する場合、オプションsep
に区切り文字を指定します。ベクターで与えられた文字列について、区切り文字を指定して連結する場合は、オプションcollapse
を指定します。
R> paste("aaa", "bbb", "ccc", sep="/") [1] "aaa/bbb/ccc" x <- c("aaa", "bbb", "ccc") paste(x, collapse="/") [1] "aaa/bbb/ccc"
論文・データ解析の支援
個別に直接相談できるのが良いと、たくさんの方にご利用頂いています。


関連記事1

R 4.0 インストール ubuntu
Rのインストール手順について。最近よくつかう「tidyverse」も一緒にインストールします。とにかく早く問題解決したい人はこちら>>直接、データ解析相談R 4.0 インストール手順事前設定$ sudo apt update -qq$ su...

R 使い方 debug(デバッグ)方法 スクリプトの書き方
スクリプトが思ったように動かない、そんなときはバグ(プログラムの間違い)があると言われます。スクリプトを書く場合、そのような間違いを書かないように注意することは当然ですが、完全に防ぐのは難しいことです。スクリプトが思うように動かない場合は、...

R 使い方 while 繰り返し スクリプトの書き方
Rで「条件を満たす間ずっと繰り返し」を行う場合は、whileを使います。とにかく早く問題解決したい人はこちら>>直接、データ解析相談while スクリプトの書き方while文は、条件式と一緒に書きます。条件を満たす間、一連の文やブロックをず...

R 使い方 while 繰り返し スクリプトの書き方
Rで「条件を満たす間ずっと繰り返し」を行う場合は、whileを使います。とにかく早く問題解決したい人はこちら>>直接、データ解析相談while スクリプトの書き方while文は、条件式と一緒に書きます。条件を満たす間、一連の文やブロックをず...

R switch 使い方 スクリプトの書き方
R の switch文は、「複数の条件」とそれに「対応した処理」をまとめて記述できるので、if文よりも簡潔にかけます。R の switchの条件は、文字列で書かれたラベルで判断します。R の switch文の「書き方」と使い方を、サンプルを...

R 使い方 if 条件分岐 スクリプトの書き方
R の if文は、フロー制御で最も単純な条件分岐です。条件に「一致したかどうか」という判断で、次に実行するコマンドを変更したりするときに使います。Rのif文の「書き方」、ANDやORを使った複数条件の指定の仕方などを、サンプルを交えてまとめ...

R 使い方 if 条件分岐 スクリプトの書き方
R の if文は、フロー制御で最も単純な条件分岐です。条件に「一致したかどうか」という判断で、次に実行するコマンドを変更したりするときに使います。Rのif文の「書き方」、ANDやORを使った複数条件の指定の仕方などを、サンプルを交えてまとめ...

R 使い方 Hello World スクリプトの書き方
Rでプログラムを書きます。今回は、プログラムの基本「Hello World!」です。とにかく早く問題解決したい人はこちら>>直接、データ解析相談Hello World プログラムHello Worldプログラムは、プログラムの勉強を開始する...

R 使い方 行列(マトリックス) スクリプトの書き方
Rのマトリックスは、他のプログラミング言語と同様、数値や文字などの1種類のデータを2次元配列として保持するデータ構造です。基本的な構造を理解すれば、Rはもっと使いやすいツールになります。マトリックスの使い方について。とにかく早く問題解決した...

R 使い方 リスト スクリプトの書き方
Rのリストは、他のプログラミング言語と同様、各項目にたいして名前をつけたベクトルです。基本的な構造を理解すれば、Rはもっと使いやすいツールになります。リストの使い方について。とにかく早く問題解決したい人はこちら>>直接、データ解析相談関連記...

R 使い方 ベクトル スクリプトの書き方
Rのベクトルは、他のプログラミング言語と同様、数値や文字などの1種類のデータを順番に保持するデータ構造です。基本的な構造を理解すれば、Rはもっと使いやすいツールになります。Rのベクトルの使い方について。とにかく早く問題解決したい人はこちら>...

R 使い方 データフレーム・ファクター スクリプトの書き方
Rのデータフレーム・ファクターは、他のプログラミング言語のデータ構造とは異なる独特な構造。でも、とてもよく使う構造で、必ず使いこなせるようになりましょう。基本的な構造を理解すれば、Rはもっと使いやすいツールになります。Rのデータフレームとフ...

R 使い方 データ構造まとめ スクリプトの書き方
Rで使うデータ構造をまとめてみます。一気に眺めることで、それぞれの特徴を理解できるかもしれません。とにかく早く問題解決したい人はこちら>>直接、データ解析相談Rのデータ構造ベクトルベクトルは、最も基本的な構造をしています。数値や文字などの1...

R 使い方 データ 読込み テキスト,csv,エクセル,データベース スクリプトの書き方
「統計ソフト R」にデータを読み込むのは簡単です。タブ区切りのデータやエクセル・DBなどからデータを取り込むことができます。とにかく早く問題解決したい人はこちら>>直接、データ解析相談Rにデータを読み込む「統計ソフト R」にデータを読み込む...
関連記事2

R plotのPDFやPNGへの保存 - PDFなら複数の画像保存も可能
Rのplot (グラフ) は、PDFやPNGファイルとして保存することができます。操作は、通常のグラフの描画と同じです。違うところは、前もって保存先のデバイスをオープンし、描画終了後に明示的にクローズするだけです。PDFなら1つのファイルに...

R 使い方 組込みデータセット iris データフレーム・ベクトル・リスト
Rのデータ型について学びます。使うデータは、組込みデータセットの「iris」です。irisの構造を眺めたり要約統計量を求めることで、データフレーム・ベクトル型・リスト型について簡単に学びます。とにかく早く問題解決したい人はこちら>>直接、デ...

ratio 1.5倍は、logFCで何?
bioinfomatics では、ratio や logFC を変動の閾値としてよく使います。ratio 2倍・4倍なら、対数表現も1・2と簡単にわかりますが、1.5倍などを閾値とした場合は、対数で何になるか覚えておくのは大変です。これらは...

R 知っていると便利!パッケージ読込みとヘルプ
Rのインストール済みのパッケージについて調べます。スクリプトがちゃんと動かないとき、「何がインストールされているか?」また、「何がインストールされていないか?」がヒントになるときがあります。とにかく早く問題解決したい人はこちら>>直接、デー...

R 関数 maxの位置・minの位置を求める
Rで、最大値や最小値を求めるのは簡単ですが、「最大値・最小値の位置は?」という問題を考えてみたいと思います。とにかく早く問題解決したい人はこちら>>直接、データ解析相談最大値・最小値を求める最大値・最小値を求めるのは簡単です。最大値を求める...

R 使い方 集計に便利な関数 aggregate
データフレームを使って集計を行う場合に、使いやすい関数があります。aggregate関数です。データフレームの計算にはapply系の関数がよく使われますが、わかりづらいという方にはオススメの方法です。とにかく早く問題解決したい人はこちら>>...

R 使い方 データフレーム 累積和を求める
データフレームやmatrixで累積和を求める機会ありませんか?「前の行の値」に「現在の行の値」を繰り返し足していくことで求められますが、せっかく「R」を使っているのに、for文やインデックスを使って求めるのも残念な感じがします。そんなときは...

R subset関数 データフレームやmatrixからの条件指定による行・列の抽出
R の subset関数は、データフレームやマトリックスから条件にマッチした部分集合を取り出します。条件指定の主なパラメータは、「subset」と「select」です。「subset」では行を抽出するための条件式、「select」では列を抽...