【发布时间】:2015-01-08 00:46:05
【问题描述】:
我的数据集如下所示:
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)
我需要做的是在每一列上运行 t 检验,比较治疗 =1 组和治疗 =0 组。然后我想有一个 p 值向量。我已经尝试(几个版本)通过循环执行此操作,但我继续收到相同的错误消息:“选择了未定义的列”。这是我目前的代码:
p.values <- c(rep(NA, 208))
for (i in 2:209) {
x <- data.frame(eg[eg$treatment==1][,i][1:2])
y <- data.frame(eg[eg$treatment==0][,i][3:5])
value <- t.test(x=x, y=y)['p.value']
p.values[i] <- value
}
在读到有人提到 for 循环仅循环数据帧后,我添加了 data.frame(),但它并没有改变任何东西。我相信有一种更简单的方法可以做到这一点,也许是通过使用 apply 系列中的某些东西?有没有人有什么建议?非常感谢!
【问题讨论】: