【发布时间】:2014-03-16 04:03:48
【问题描述】:
我有一个相对简单的问题,我认为我不能正确地使用 R。
我有一个数据框,其中包含多个观察结果,存储在行中,还有一堆我不想丢失的注释,位于同一数据框的其他列中。
我想对数据框的几列中的值进行 t 检验,并将结果写入(理想情况下)相同的数据框。
一个简单的例子是:
# Generate the data
experimentName <- paste(rep("name",20), c(1:20), sep="")
experimentAnno1 <- rep(paste(rep("anno",5), c(1:5), sep=""), 4)
a1 <- rnorm(n=20, mean=10, sd=5)
a2 <- rnorm(n=20, mean=11, sd=5)
a3 <- rnorm(n=20, mean=12, sd=5)
b1 <- rnorm(n=20, mean=20, sd=5)
b2 <- rnorm(n=20, mean=21, sd=5)
b3 <- rnorm(n=20, mean=19, sd=5)
sampledata <- cbind(experimentName, experimentAnno1, a1,a2,a3,b1,b2,b3)
所以我尝试了一个非常简单的
ttestfun = function(x) t.test(x[,c("a1", "a2", "a3")], x[,c("b1", "b2", "b3")])$p.value
p.value = apply(sampledata, 1, ttestfun)
这不起作用:(
我还尝试了 by()、melt()、apply() 等的一大堆组合 - 所有这些我都认为我做错了。
我希望得到的结果是 sampledata 数据框中的其他列:
# pValue
p.value
# LoConf
a$conf.int[1]
# UpConf
a$conf.int[2]
等等
最有效的方法是什么?
提前致谢!
【问题讨论】: