1

我有示例数据框

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

, x1, x2...,x10000

我想使用该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, x2,...,对所有人执行此操作x10000。虽然我会使用该apply函数,MARGIN=2但我无法获得该apply函数来根据classifier.

(上面提供的示例绝对没有统计意义。不要像病毒一样传播)

有什么帮助吗?

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 回答