【发布时间】:2018-08-28 21:14:02
【问题描述】:
我正在使用 Bioconductor 套件(所有数据集)并尝试对每个基因进行 t.test。目标是查看两性之间的基因表达差异。我可以通过以下方式获得基本的 t.test:
> males <- exprs[, pData(ALL)$sex == "M"]
> females<-exprs[, pData(ALL)$sex == "F"]
> t.test(males, females)
但是当我尝试使用 apply 函数为每个基因提取 p 值时,命令永远不会结束,只会继续无限循环(我认为)。
pvals=apply(exprs,1,function(x) {t.test(x[males],x[females])$p.value})
这里是男性样本,有 12625 行(即探测 ID)。
> males
01005 01010 04006 04007 04008
1000_at 7.597323 7.479445 7.384684 7.905312 7.065914
1001_at 5.046194 4.932537 4.922627 4.844565 5.147762
1002_f_at 3.900466 4.208155 4.206798 3.416923 3.945869
1003_s_at 5.903856 6.169024 6.116890 5.687997 6.208061
【问题讨论】:
-
请显示一些示例数据。基因是单独的行还是一列中的指标? 它分崩离析 也没有帮助。发布实际错误或不良结果。
-
谢谢。我有表达数据(按行),这被标记为
exprs,然后是男性和女性。我相信我的男性和女性已经在单独的 data.frames 中。我可以使用以下内容:'sapply(exprs[-1], function(x) {t.test(x[males[,1] == 1], x[females[,1] == 2])$p .value})' 还是我应该做一些data.frame?原始的 data.frame 已经有两性了(我把它们分开了)。它在pData(ALL)$sex。 -
@Oars 您对我之前就您之前提出的任何建议以及在进行差异基因表达分析时应考虑的相关问题提出的任何建议都非常抗拒。简而言之: 1. 不要使用 t 检验(或上一个问题中的 ANOVA)来寻找差异表达的基因。 2. 您正在处理微阵列数据,其中值是每个探针而不是每个基因的表达值。您首先需要总结每个基因的探针值(通常使用 Tukey 的稳健中值抛光来完成),然后使用例如
limma寻找差异表达的基因。 -
Maurits - 一如既往的感谢。我的导师将 exprs(ALL) 调用称为获取“基因表达”。我敢肯定你说得更准确(说真的)。无论出于何种原因,我们都希望我们运行一个循环(使用 apply),为每个循环提供来自 t.test 的 p 值......我不想说基因,但他称它们为基因,即 445_at、40419_at、等等。我真的希望你在教这门课!我希望他能向我们展示最合适的包,为什么使用它,如何应用它以及如何使用它。我正在经历折磨。
标签: r