基因表达无法使用,因为“参数暗示不同的行数”

时间:2018-08-26 20:54:08

标签: r

我正在使用Bioconductor的ALL数据集。我的任务是将“ BT”属性转换为仅具有两个级别“ B”和“ T”的分类变量,然后使用ANOVA测试所有与B / T疾病亚型有显着关联的基因,然后绘制p值。 / p>

作为解决方案,我执行了以下操作:

> bcell = grep("^B", as.factor(ALL$BT))
> tcell = grep("^T", as.factor(ALL$BT))

然后,我修改了一段我也已经使用过的代码段:

> anova.lm.bcell <- function(x) {
+ df.tmp <-data.frame(Expr=x,bcell)
+ anova(lm(bcell~Expr,df.tmp)) ["Expr", "Pr(>F)"]
+ }

但是,当我用下面的代码评估B细胞(来自BT)在基因表达中的作用时,我会收到可怕的“不同行数”消息!

p.bcell <- apply(exprs(ALL), 1, anova.lm.bcell)

 Error in data.frame(Expr = x, bcell) : 
  arguments imply differing number of rows: 128, 95 

这很合理,我有95个“ B”单元格和33个“ T”单元格,但是我无法开发出可以运行的脚本?

1 个答案:

答案 0 :(得分:0)

您选择grep()而不是grepl()的原因是什么?

如果您使用grepl()并将其包装在对as.integer()的调用中,那么您将拥有一个与原始data.frame长度相同的整数向量。

bcell = as.integer(grepl("^B", as.factor(ALL$BT)))
tcell = as.integer(grepl("^T", as.factor(ALL$BT)))

anova.lm.bcell <- function(x) {
    df.tmp <-data.frame(Expr=x,bcell=bcell)
    anova(lm(bcell~Expr,df.tmp)) ["Expr", "Pr(>F)"]
}

p.bcell <- apply(exprs(ALL), 1, anova.lm.bcell)

bcell以“ B”开头时,1的值为ALL$BT,否则为0。您的bcelltcell向量的简单1/0标志足以满足您的用例吗?