我有一个数据框(golubdf
),有3051个基因和38个列(2个类标签 - 27个列,一个标签:0,11列其他标签:1)。我需要编写一个for
循环来迭代500次,在每次迭代中,数据框的列被混洗(类标签混合),Wilcox测试计算所有基因和所有基因的最大检验统计量保存在列表中:
t.test.all.genes <- function(x,s1,s2) {
x1 <- x[s1]
x2 <- x[s2]
x1 <- as.numeric(x1)
x2 <- as.numeric(x2)
t.out <- wilcox.test(x1,x2, alternative="two.sided", exact=F, correct=T)
out <- as.numeric(t.out$statistic)
return(out)
}
prs = replicate(500, apply(golubdf[ ,sample(ncol(golubdf))], 1,
t.test.all.genes, s1=labels==0, s2=labels==1))
ps.max = apply(prs, 1, max)
我不确定这是否正确 - 我是否需要使用行或列?因为我需要对所有基因使用行(1)的最大检验统计量。在此之后,我需要从最大测试统计列表中获取95%值测试统计信息,这是我不知道如何使其工作。
答案 0 :(得分:0)
ps.max = apply(prs,1,max)行会导致错误。试试ps.max = max(prs)。另外,根据您的要求,您必须将您的输出保存在列表中。首先创建一个空列表,如下所示:
myList中&LT; -list()。然后在for循环中继续将最大值插入列表。
由于