невозможно найти унаследованный метод для функции 'UniFrac' для подписи '' phylo '' - PullRequest
1 голос
/ 10 апреля 2020
library(tidyverse)
library(ape)
library(phyloseq)

unifrac_unweighted <- UniFrac(tree, weighted = F)

Fehler in (function (classes, fdef, mtable) : unable to find an inherited method for function ‘UniFrac’ for signature ‘"phylo"’
3.
stop(gettextf("unable to find an inherited method for function %s for signature %s", sQuote(fdef@generic), sQuote(cnames)), domain = NA)
2.
(function (classes, fdef, mtable) { methods <- .findInheritedMethods(classes, fdef, mtable) if (length(methods) == 1L) ...
1.
UniFrac(tree_BLS, weighted = T)

дерево является филогенетическим c деревом (подтверждено class(tree)). Я уже пытался переустановить phyloseq, но это не помогает. Как избежать этой ошибки?

1 Ответ

1 голос
/ 10 апреля 2020

Функция UniFrac требует объекта phyloseq:

physeq: (Required). ‘phyloseq-class’, containing at minimum a
          phylogenetic tree (‘phylo-class’) and contingency table
          (‘otu_table-class’). See examples below for coercions that
          might be necessary

Не совсем уверен, имеет ли это смысл для вас, но, возможно, рассмотрим приведенный ниже пример. Ключ в том, чтобы правильно построить объект phyloseq, одна часть, в которой я не уверен, это как создать таблицу otu_table, я установил taxa_are_row=FALSE:

#you get a tree
sample_tree = rtree(20,tip.label=letters[1:20])

# there are counts associated with each sample in tree
sample_counts = matrix(rnbinom(100*20,mu=20,size=1),
ncol=20,dimnames=list(1:100,letters[1:20]))

x1 = phyloseq(
otu_table(sample_counts,taxa_are_row=FALSE), 
sample_tree)

UniFrac(x1)
...