我在将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})
我真的很感激任何想法或输入。
答案 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})