如何对整个data.frame进行t.测试并提取p值?

如何对整个data.frame进行t.测试并提取p值?,r,for-loop,apply,R,For Loop,Apply,我的数据集如下所示: a <- rnorm(2) b <- rnorm(2)-3 x <- rnorm(13) y <- rnorm(2)-1 z <- rnorm(2)-2 eg <- expand.grid(a,b,x,y,z) treatment <- c(rep(1, 2), rep(0,3)) eg <- data.frame(t(eg)) row.names(eg) <- NULL eg <- cbind(treatment

我的数据集如下所示:

a <- rnorm(2)
b <- rnorm(2)-3
x <- rnorm(13)
y <- rnorm(2)-1
z <- rnorm(2)-2
eg <- expand.grid(a,b,x,y,z)
treatment <- c(rep(1, 2), rep(0,3))
eg <- data.frame(t(eg))
row.names(eg) <- NULL
eg <- cbind(treatment, eg)

a两个选项,都使用
sapply

sapply(
  eg[-1], function(x) t.test(x[eg$treatment==1],x[eg$treatment==0])[["p.value"]] 
)
mapply(function(x,y) t.test(x ~ y,data=cbind(x,y))[["p.value"]], eg[-1], eg[1])
或者在名称上循环:

sapply(
  names(eg[-1]), 
  function(x) t.test(as.formula(paste(x,"~ treatment")),data=eg)[["p.value"]] 
)
甚至
mappy

sapply(
  eg[-1], function(x) t.test(x[eg$treatment==1],x[eg$treatment==0])[["p.value"]] 
)
mapply(function(x,y) t.test(x ~ y,data=cbind(x,y))[["p.value"]], eg[-1], eg[1])