R phyloseq tax_glom, используемый в функции, выдает ошибку - PullRequest
0 голосов
/ 02 ноября 2019

Я пытаюсь создать функцию для получения таблицы с относительным изобилием любого заданного таксранка с помощью PHYLOSEQ, что-то вроде:

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, Phylum) выдает ошибку: </p>

Ошибка в tax_glom (PhyloObj, taxrank = "TaxonRank"): неверный аргумент для taxrank. Должно быть среди значений 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)
}

Что не так с первым параметром ?? Я просто хочу использовать любой заданный таксранк (тип, класс ....... род) в функции и сгенерировать таблицу !!!!

Спасибо

1 Ответ

1 голос
/ 02 ноября 2019

Трудно сказать без воспроизводимого примера, но я сильно подозреваю, что проблема в том, что вы воспринимаете TRank как строку, а не как имена символов. Другими словами, попробуйте убрать кавычки вокруг "TRank" в следующих двух строках:

GROUP <- tax_glom(PhyloObj, taxrank=TRank)

и

TAXglom <- tax_table(Percent)[,TRank]

Приведенная вами ошибка приводит к тому, что она звучит так, как вы используетеTaxonRank в качестве имени аргумента в вашей действительной функции, в то время как тот, который вы нам показали, использует TRank (это, вероятно, не имеет значения, но это немного сбивает с толку читателя)

...