函数中使用的R phyloseq tax_glom给出错误

时间:2019-11-02 14:02:05

标签: r bioinformatics phyloseq

我正在尝试创建一个函数,以使用PHYLOSEQ获得任何给定的taxrank的相对丰度的表,例如:

Relative_Table <- function (PhyloObj, TRank) {
    GROUP <- tax_glom(PhyloObj, taxrank="TRank")
    Percent <- transform_sample_counts(GROUP, function(x)100* x / sum(x))
    OTUglom <- otu_table(Percent)
    TAXglom <- tax_table(Percent)[,"TRank"]
    GroupTable <- merge(TAXglom, OTUglom, by=0, all=TRUE)
    GroupTable$Row.names = NULL
    return(GroupTable)
}

所以当我像这样使用它时: 表格<-Relative_Table(PHYLO_Obj,Phylum) 它给我一个错误:

tax_glom(PhyloObj,taxrank =“ TaxonRank”)中的错误: 不好的taxrank论点。必须在rank_names(physeq)的值之中

尽管如此,当我在函数内部使用taxtax时,它仍然可以正常工作:

Relative_Table <- function (PhyloObj) {
    GROUP <- tax_glom(PhyloObj, taxrank="Phylum")
    Percent <- transform_sample_counts(GROUP, function(x)100* x / sum(x))
    OTUglom <- otu_table(Percent)
    TAXglom <- tax_table(Percent)[,"Phylum"]
    GroupTable <- merge(TAXglom, OTUglom, by=0, all=TRUE)
    GroupTable$Row.names = NULL
    return(GroupTable)
}

第一个选项有什么问题??,我只想在函数中使用任何给定的taxrank(Phylum,Class ....... Genus)并生成一个表!!!!

谢谢

1 个答案:

答案 0 :(得分:1)

没有可重复的示例很难说,但是我强烈怀疑问题是您将TRank当作字符串而不是符号名。换句话说,请尝试在这两行中的"TRank"周围加上引号:

GROUP <- tax_glom(PhyloObj, taxrank=TRank)

TAXglom <- tax_table(Percent)[,TRank]

您引用的错误听起来像是您在实际函数中使用TaxonRank作为自变量名称,而您向我们展示的错误却使用了TRank(这可能无关紧要,但这是对读者有些困惑)