バイオインフォマティクスにおいて、データ解析の効率を向上させるために Rのtidyverse を活用しようと考えている方も多いのではないでしょうか?
その中でも、dplyr
はデータ操作において強力なツールです。特に、列名のパターンマッチング を簡単に行うことができる matches()
関数は、大規模なバイオデータを扱う際に便利です。
本記事では、matches()
の基本的な操作を解説し、バイオデータ解析への応用を考えていきます。
1. matches() とは?
matches()
は dplyrのselect()
内で使われるヘルパー関数 で、正規表現(regex)を用いて列名をフィルタリング できます。
例えば、バイオインフォマティクスでは 遺伝子発現データ や サンプル情報 など、多数の列を持つデータフレームを扱うことがよくあります。matches()
を使えば、特定のキーワードを含む列を簡単に選択できます。
2. matches() の基本的な使い方
まずは、matches()
の基本的な構文を確認しましょう。
select(データフレーム, matches("パターン"))
例1:特定の単語を含む列を抽出
サンプルデータを作成し、matches()
を使って “gene” を含む列を選択してみます。
library(tidyverse)
# ダミーデータの作成
df <- tibble(
sample_id = 1:5,
gene_A_exp = c(2.3, 4.5, 3.2, 5.1, 4.0),
gene_B_exp = c(1.2, 3.4, 2.8, 3.9, 2.1),
condition = c("control", "treated", "control", "treated", "control")
)
# "gene" を含む列のみ選択
df %>% select(matches("gene"))
実行結果
# A tibble: 5 × 2
gene_A_exp gene_B_exp
<dbl> <dbl>
1 2.3 1.2
2 4.5 3.4
3 3.2 2.8
4 5.1 3.9
5 4.0 2.1
解説
matches("gene")
により、gene_A_exp
とgene_B_exp
が選択されました。sample_id
やcondition
など、”gene” を含まない列は除外されています。
3. matches() でより柔軟なパターンマッチング
例2:特定の接頭辞(prefix)を持つ列を選択
例えば、すべての “gene_” で始まる列を選択したい場合、次のように書けます。
df %>% select(matches("^gene_"))
^
は 「先頭一致」 を意味します。"^gene_"
で、”gene_” から始まるすべての列を取得できます。
例3:特定の接尾辞(suffix)を持つ列を選択
“exp” で終わる列だけを選びたい場合は、次のように記述できます。
df %>% select(matches("_exp$"))
$
は 「末尾一致」 を意味します。"_exp$"
により、”_exp” で終わる列を選択できます。
例4:複数の単語を含む列を選択
例えば、”A” または “B” を含む列を取得するには、次のように記述します。
df %>% select(matches("A|B"))
|
は 「または」 を意味する 正規表現のOR演算子 です。"A|B"
により、”A” または “B” を含む列がすべて選択されます。
4. バイオデータ解析への応用
実際のバイオデータでは、数百、数千の遺伝子が列名として含まれるデータフレームを扱うことがあります。matches()
を活用すると、関心のある遺伝子や条件のみを簡単に抽出 できます。
ケーススタディ:RNA-seq データ解析
RNA-seq データのデータフレームを仮定し、特定の遺伝子を含む列を選択してみます。
rna_seq_data <- tibble(
sample_id = 1:5,
TP53_expr = runif(5, 10, 50),
BRCA1_expr = runif(5, 5, 40),
MYC_expr = runif(5, 20, 100),
housekeeping_GAPDH = runif(5, 30, 80)
)
# "expr" を含む遺伝子の発現データのみを抽出
rna_seq_data %>% select(matches("expr$"))
実行結果
# A tibble: 5 × 3
TP53_expr BRCA1_expr MYC_expr
<dbl> <dbl> <dbl>
1 25.3 7.2 89.4
2 33.1 12.3 67.8
3 14.5 29.1 54.2
4 42.8 23.5 72.6
5 39.7 18.9 80.1
ポイント
"expr$"
を指定することで、TP53_expr
、BRCA1_expr
、MYC_expr
など、発現値を示す列のみを取得できました。housekeeping_GAPDH
は”expr”を含まないため除外されました。
5. まとめ
本記事では、dplyr
の matches()
関数を用いた列名のパターンマッチング について解説しました。
主なポイント
matches("パターン")
を使うと、正規表現を用いて列を選択できる。"^prefix"
で 特定の接頭辞 を持つ列を選択。"suffix$"
で 特定の接尾辞 を持つ列を選択。"A|B"
で 複数の単語を含む列 を選択可能。- バイオデータ解析では、RNA-seq などの 大規模データの前処理 に非常に役立つ。
特にバイオインフォマティクスの解析では、大量のデータをいかに効率よく処理するかが重要です。matches()
を活用することで、スクリプトの可読性を向上させつつ、必要な情報を迅速に抽出 できるようになります!!
ぜひ実践で試してみてくださいね〜!