如何对整个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])