0

私の入力は次のようになり、遺伝的データである:/ A(あなたが単一の値を持っている場合は、私たちのすべてが「/」なし2つの対立遺伝子(ママとパパを)持っているので、遺伝学に深く得ることなくすべての可能性をキャッチする正規表現ですか?

SNP  VALUE 
rs123456 A/G 
rs345353 del/CTT 
rs343524 T 
rs243224 T/del 
.... 

両方の対立遺伝子が同じであることを意味するC/G/T/del/CTT)であり、そうでなければ、それらが異なることを示すスラッシュ「/」がある。

SNPの既知のパターンを見つける必要がありますが、多くの可能性があることを理解しています(/(スラッシュ)値の数が多い場合)。

私はすでに[A|C|G|T|del|CTT]のような正規表現を構築しています。

A/G = G/Aですので、すべての可能性に合わせる必要があります。

これを行うのに役立つ機能やロジックはありますか?お知らせ下さい。私は2、より多くを持っている場合

rs123 = A/G, rs456 = T/C, rs789 = CTT: 
Option 1: A T CTT; 
Option 2: A C CTT; 
Option 3: G T CTT; 
Option 4: G C CTT; 

をしかし、/私はすべて取得したい:

予想される出力は、例えば値のすべての可能な変形がある:

PS

の詳細情報を追加オプション。

+1

をあなたが期待される出力を提供してもらえますか?より大きなデータの例を追加することも検討してください。 – missuse

+2

あなたの予想される出力は何ですか?また、すべてのベースをカバーするサンプル入力を提供することができます(これは、あなたが挙げたもののような複数のケースのサンプル入力です)。そうすることで、私たちが適切に援助するのに役立ちます。 – ctwheels

+2

あなたは '/'、次に 'sort'、' paste 'を一緒に分割する必要があると思います。 –

答えて

1

私が正しく理解していれば、あなたは、この後、次のとおりです。

df = data.frame(SNP = c("rs123456", "rs345353", "rs343524" ,"rs243224"), 
       value = c("A/G", "del/CTT", "T", "T/del"), stringsAsFactors = F) 

expand.grid(strsplit(df$value, "/")) 
#output 
    Var1 Var2 Var3 Var4 
1 A del T T 
2 G del T T 
3 A CTT T T 
4 G CTT T T 
5 A del T del 
6 G del T del 
7 A CTT T del 
8 G CTT T del 

または文字列を組み合わせごとに

apply(expand.grid(strsplit(df$value, "/")), 1, paste, collapse = " ") 
#output 
[1] "A del T T" "G del T T" "A CTT T T" "G CTT T T" "A del T del" "G del T del" 
[7] "A CTT T del" "G CTT T del" 

または要求される場合:

do.call(paste, c(expand.grid(strsplit(df$value, "/")), sep=" ")) 
+0

ブラボー!ありがとう! 私は正規表現の解決法も探しています。 –

関連する問題