继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

批量做T检验出bug怎么办?

慕标5832272
关注TA
已关注
手记 1071
粉丝 228
获赞 996

一直感觉在生信入门阶段,盲目的用P<0.05且|log2(FC)|>1筛选差异基因过于robust,会导致很多有意义的差异基因没有筛到。比如说,很多基因log2(FC)=0.99,你说他没意义?这种一刀切的方式很激进,所以才会有GSEA,才会有WGCNA。所以我宁愿只将T检验做初步分析,不会丢掉信息。

批量做T检验怎么写?我今天写了一段程序供大家参考

一 整理表达矩阵test,KO为敲低组,WT为正常组

webp

二 批量T检验

pvalue<-sapply(1:15004,function(i){t.test(test[i,c(1:3)],test[i,c(4:6)])[[3]]})

突然报错了:Error in t.test.default(D[i, c(1:3)], D[i, c(4:6)]) :
data are essentially constant

webp

这是为什么呢?我开始查bug,为了看是哪一行出了问题,我将sapply换成了for循环

pvalue<-t.test(test[1,c(1:3)],test[1,c(4:6)])[[3]]
for(i in 2:15004){pvalue<-c(pvalue,t.test(test[i,c(1:3)],test[i,c(4:6)])[[3]])}

跑到了第1837行,突然出了bug,于是,我调1837行的数据出来看

webp

原来是实验组和对照组的三个数值一样导致没法做T检验了。反手写了个if语句,将这种情况的行挑出来并删掉

c<-0
for(i in 1:150004){if((test[i,1]==test[i,2])&(test[i,1]==test[i,3])&
(test[i,4]==test[i,5])&(test[i,4]==test[i,6])==TRUE){c<-c(c,i)}}
test<-test[-c,]
pvalue<-sapply(1:15004,function(i){t.test(test[i,c(1:3)],test[i,c(4:6)])[[3]]})



作者:PriscillaBai
链接:https://www.jianshu.com/p/147b2195d6a3


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP