1

サンプルデータフレームがあります

test.df<-data.frame(classifier=runif(n=1000), x1=rnorm(1000), x2=rnorm(1000), x3=rnorm(1000))

、、... x1x2x10000

applyこの関数を使用して、大量のテストを実行し(たとえばt.test)、結果をベクトルに収集したいと思います(たとえばt.test()$p.value)。単一の列でのテストは次のようになりますt.test(test.df$x1[ test.df$classifier<0.4 ], test.df$x1[ test.df$classifier>0.6 ])$p.value

、、 ...、 。x1でこれをすべて実行したいと思います。で関数を使用しますが、に従ってすべての列ベクトルを分割する関数を取得できません。x2x10000applyMARGIN=2applyclassifier

(上記の例には統計的な意味はまったくありません。ウイルスに感染しないでください)

何か助けはありますか?

4

2 に答える 2

3

使用apply

idx <- matrix(2:ncol(test.df), ncol=1)
apply(idx, 1, function(x) {   
    v1 <- test.df[test.df$classifier < 0.4, x]
    v2 <- test.df[test.df$classifier > 0.6, x]
    t.test(v1, v2)$p.value
})
于 2013-01-31T10:16:45.443 に答える
2

これは、あなたの望むことですか ?

df<-data.frame(classifier=runif(n=1000), x1=rnorm(1000), x2=rnorm(1000), x3=rnorm(1000))
sapply(df[,-1], function(v) {
  t.test(v[df$classifier<0.4], v[df$classifier>0.6])$p.value
})

これは:

       x1        x2        x3 
0.5028683 0.1238735 0.2021623 
于 2013-01-31T10:11:05.433 に答える