【发布时间】:2013-09-10 21:38:09
【问题描述】:
这是一个非常基本的问题……我确定它写在这里的某个地方……我正在尝试创建一个新变量,告诉我三人组中是否存在孟德尔违反(遗传学数据)
例如(对于那些不了解遗传学的人): 对于一个家庭(每行一个),我将父亲、母亲和孩子的基因型表示为 A/G、G/A、G/G(作为单独的变量)。我想创建一个新的 0/1 或 False/True 变量,告诉我 Child 的等位基因 1 是否在母亲基因型的等位基因或父亲基因型的任一等位基因中可见。等位基因 2 也是如此。
我尝试在 R 中按如下方式使用正则表达式:
vcf_GT$MVLR <- regexpr(c(sapply(strsplit(as.character(vcf_GT[,10]),"/"),function(x) x[1])),
(sapply(strsplit(as.character(vcf_GT[,10]),"/"),function(x) x[2])),
(c(c(sapply(strsplit(as.character(vcf_GT[,9]),"/"),function(x) x[1])),
(sapply(strsplit(as.character(vcf_GT[,9]),"/"),function(x) x[2])),
c(sapply(strsplit(as.character(vcf_GT[,8]),"/"),function(x) x[1])),
(sapply(strsplit(as.character(vcf_GT[,8]),"/"),function(x) x[2]))))) > 0
第 10 列代表孩子的基因型,第 9 列和第 8 列分别代表母亲和父亲的基因型。这很乏味,我可能在这里忘记了括号。
必须有一种更简单的方法来与父母检查孩子的基因型。
提前致谢!
附:如果我说不通 - 我会尝试添加更多细节。
编辑:虽然我的代码实际上是一大行,但我已按要求添加了返回值,因此更易于阅读(尽管如此,这有点难以理解 :))
【问题讨论】:
-
我建议您在代码中使用空格和回车。它使我们可以阅读并为您调试!
-
并发布一些具有所需输出的输入数据也很好。