t使用R的行测试和p值估计

时间:2014-10-14 18:26:44

标签: r

我在将t.test应用于以下数据集时遇到问题。对于每个基因座,我想将3个对照与3个测试数字进行比较。

输入

 locus ctrl1 ctrl2 ctrl3 test1 test2 test3
  LOC1 43.10 34.15 39.26 34.64 32.78 34.94
  LOC2 80.54 76.72 74.58 76.00 78.03 72.15
  LOC3 30.25 51.90 40.12 68.54 74.44 69.51

我已应用以下脚本,但我不相信其正确执行任务,并且因为得到的p值看起来不正确,我怀疑它正在计算全局比较而不是一行一行。

#!/usr/bin/Rscript
data<-read.table(input,header=FALSE,sep=',', na.strings='NA',blank.lines.skip=TRUE)
frame=data.frame(data[1:7])
pvalue=apply(as.matrix(frame),1,function(x)
{t.test(as.numeric(x[2:4]),as.numeric(x[5:7]),na.rm=T)$p.value})

我真的很感激任何想法或输入。

2 个答案:

答案 0 :(得分:0)

我不确定我是否理解为什么以及如何操作数据(当你的输入看起来包含标题时,为什么要在导入中放入“header = F”?为什么要将数据转换为矩阵? ,由于第一列,必然是一个字符?)但是应用的调用对我来说似乎是正确的,即它确实按行应用你的函数。 你应该获得0.21,0.48和0.03的pvalues。这不是你得到的吗?

答案 1 :(得分:0)

您好,感谢您的评论。

我做了一些小改动,现在看来下面的脚本可以在这个测试数据集和我的大数据集上运行。

data<-read.table(input,header=TRUE,sep='\t', na.strings='NA',blank.lines.skip=TRUE)
frame=data.frame(data[2:7])
pvalue=apply(frame,1,function(x) {t.test(x[1:3],x[4:6], alternative = "two.sided", paired = TRUE)$p.value})