捕捉所有可能性的正则表达式?
Regular expression to catch all possibilities?
我的输入是如下所示的遗传数据:
SNP VALUE
rs123456 A/G
rs345353 del/CTT
rs343524 T
rs243224 T/del
....
在不深入研究遗传学的情况下,我们所有人都有 2 个等位基因(妈妈和爸爸),所以如果您的值没有“/”(A/C/G/T/del/CTT),则意味着两个等位基因相同,否则,有斜线“/”表示它们不同。
长话短说,我需要找到 SNP 的已知模式,但我知道有很多可能性(如果/(斜线)值的数量很大)。
我已经构建了这样的正则表达式:[A|C|G|T|del|CTT]
.
A/G = G/A 所以我需要匹配所有的可能性。
是否有任何功能或逻辑可以帮助我做到这一点?请指教
P.S
添加更多信息:
预期输出是值的所有可能变体,例如:
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;
但如果我有超过 2 个/我想获得所有选项。
如果我没理解错的话你是在找这个:
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=" "))
我的输入是如下所示的遗传数据:
SNP VALUE
rs123456 A/G
rs345353 del/CTT
rs343524 T
rs243224 T/del
....
在不深入研究遗传学的情况下,我们所有人都有 2 个等位基因(妈妈和爸爸),所以如果您的值没有“/”(A/C/G/T/del/CTT),则意味着两个等位基因相同,否则,有斜线“/”表示它们不同。
长话短说,我需要找到 SNP 的已知模式,但我知道有很多可能性(如果/(斜线)值的数量很大)。
我已经构建了这样的正则表达式:[A|C|G|T|del|CTT]
.
A/G = G/A 所以我需要匹配所有的可能性。
是否有任何功能或逻辑可以帮助我做到这一点?请指教
P.S
添加更多信息:
预期输出是值的所有可能变体,例如:
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;
但如果我有超过 2 个/我想获得所有选项。
如果我没理解错的话你是在找这个:
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=" "))