R 将空格分隔的文本文件转换为命名向量以计算HWE

R 将空格分隔的文本文件转换为命名向量以计算HWE,r,bioinformatics,genetics,R,Bioinformatics,Genetics,我在处理文本文件和向量 我有一个空格分隔的文本文件,格式如下: id1 AA 44 AG 20 GG 36 id2 CC 30 CT 22 TT 48 id3 CT 60 CC 30 TT 10 ... 我需要一个代码,在每一行循环,把id放在一个变量中,其余的值放在一个向量中。对应于第一行的向量示例: x <- id1 y <- c(AA=40,AG=20,GG=36) x如果我们有备用列(假设我们有一个通过读取read.csv/read.table的csv文件在R中创建的对象

我在处理文本文件和向量

我有一个空格分隔的文本文件,格式如下:

id1 AA 44 AG 20 GG 36
id2 CC 30 CT 22 TT 48
id3 CT 60 CC 30 TT 10
...
我需要一个代码,在每一行循环,把id放在一个变量中,其余的值放在一个向量中。对应于第一行的向量示例:

x <- id1
y <- c(AA=40,AG=20,GG=36)

x如果我们有备用列(假设我们有一个通过读取
read.csv/read.table
csv
文件在R中创建的对象),然后使用
asplit
按行拆分,不包括第一列“id”列,并使用
setNames

lst1 <- Map(setNames, asplit(df1[-1][c(FALSE, TRUE)], 1), 
         asplit(df1[-1][c(TRUE, FALSE)], 1))
names(lst1) <- df1[[1]]
lst1$id1
# AA AG GG 
# 44 20 36 

lst1逐行循环,然后应用HWE功能:

library("HardyWeinberg")

# data
df1 <- read.table(text = "
id1 AA 44 AG 20 GG 36
id2 CC 30 CT 22 TT 48
id3 CT 60 CC 30 TT 10", header = FALSE, stringsAsFactors = FALSE)

out <- apply(df1[, c(3, 5, 7)], 1, function(i){
  x <- HWChisq(setNames(i, c("AA", "AB", "BB")), verbose = FALSE)
  x$pval
})

# [1] 5.774374e-09 1.182236e-07 7.434226e-02

要计算X染色体的HWE,请参见vignette:

最近,Graffelman和Weir(2016)提出了针对X染色体上双等位基因标记的HWE特定测试。这些测试同时考虑了男性和女性。X染色体测试可以通过上一节中提到的相同函数(HWChisq、HWLratio、HWExact、HWPerm)执行,并将参数
X.linked=TRUE
添加到函数调用中


看起来像基因型数据,数字是等位基因的百分比(总和是100)?您能告诉我们为什么需要这种格式的数据吗?下一步是什么?@zx8754是的,您是对的!但这些数字是等位基因的计数,而不是百分比。我需要使用HardyWeinberg包中的HWChisq函数来排除p值<0的SNP。001@NST如果您可以显示修改后示例的
dput
,那将是greatThank you akurn。列不是交替的,这只是一个示例。我将修改这个问题。我有很多SNP只有两种基因型。他们应该如何使用HWChisq测试?非常感谢您的帮助。@NST若要查看编辑,请阅读手册中的说明。
library("HardyWeinberg")

# data
df1 <- read.table(text = "
id1 AA 44 AG 20 GG 36
id2 CC 30 CT 22 TT 48
id3 CT 60 CC 30 TT 10", header = FALSE, stringsAsFactors = FALSE)

out <- apply(df1[, c(3, 5, 7)], 1, function(i){
  x <- HWChisq(setNames(i, c("AA", "AB", "BB")), verbose = FALSE)
  x$pval
})

# [1] 5.774374e-09 1.182236e-07 7.434226e-02
cbind(df1, HWE = out)
#    V1 V2 V3 V4 V5 V6 V7          HWE
# 1 id1 AA 44 AG 20 GG 36 5.774374e-09
# 2 id2 CC 30 CT 22 TT 48 1.182236e-07
# 3 id3 CT 60 CC 30 TT 10 7.434226e-02