0

golubdf3051 個の遺伝子と 38 列 (2 クラス ラベル - 27 列、1 つのラベル: 0、11 列、他のラベル: 1)のデータ フレーム ( ) があります。500 回反復するループを作成する必要がありforます。各反復では、データ フレームの列がシャッフルされ (クラス ラベルが混同されます)、すべての遺伝子に対して計算された 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) を試してみてください。また、要件に応じて、アウトプットをリストに保存する必要があります。まず、次のように空のリストを作成します。

myList<-list()。次に、for ループ内で最大値をリストに挿入し続けます。

ありがとう

于 2013-08-06T13:00:29.103 に答える