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

R phyloseq tax_glom used in a function give a error

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

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)
}

所以当我使用它时: TABLE <- Relative_Table(PHYLO_Obj, 门) 它给我一个错误:

tax_glom(PhyloObj, taxrank = "TaxonRank") 错误: 糟糕的税收等级论点。必须在 rank_names(physeq)

的值之间

尽管如此,当我在函数内部使用 taxrank 时,它运行良好:

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) 并生成一个 Table !!!!

谢谢

如果没有可重现的示例很难说,但我强烈怀疑问题在于您将 TRank 视为字符串而不是符号名称。换句话说,试着去掉这两行中 "TRank" 周围的引号:

GROUP <- tax_glom(PhyloObj, taxrank=TRank)

TAXglom <- tax_table(Percent)[,TRank]

你引用的错误听起来像是你在实际函数中使用 TaxonRank 作为参数名称,而你向我们展示的一个使用 TRank (这可能无关紧要,但是 reader)

有点混乱