为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
Java

一直感觉在生信入门阶段,盲目的用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


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
全栈工程师
手记
粉丝
228
获赞与收藏
996

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消