0

我有一个数据框 ( 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% 的值测试统计,我不知道如何让它工作。

4

1 回答 1

0

ps.max = apply(prs, 1, max) 行会导致错误。试试 ps.max = max(prs)。此外,根据您的要求,您必须将输出保存在列表中。首先创建一个空列表,如下所示:

我的列表<-列表()。然后在 for 循环内继续将最大值插入列表。

谢谢

于 2013-08-06T13:00:29.103 回答