我已经使用 ape 包的 ape 函数和 read.tree 函数在 R 中导入了一个 ClustalW2 树。我使用 chronopl 函数估计分子年龄,从而生成超度量二叉树。我想从中创建一个 R 构建树状图对象。

这棵树绘制得很好,是一个真正的 phylo 对象。但是我在尝试转换时遇到了问题:

最小工作示例:

require(ape)
test.tree <- read.tree(file = "testree.phylip", text = NULL, tree.names = NULL, skip = 0,
    comment.char = "#", keep.multi = FALSE)

test.tree.nu <- chronopl(test.tree, 0, age.min = 1, age.max = NULL,
node = "root", S = 1, tol = 1e-8,
CV = FALSE, eval.max = 500, iter.max = 500)

is.ultrametric(test.tree.nu)
is.binary.tree(test.tree.nu)
treeclust <- as.hclust.phylo(test.tree.nu)

结果树“看起来”很好,
我测试以确保树不是超度量和二元树,并希望将其转换为 hclust 对象,最终使其成为树状图对象。
> is.binary.tree(test.tree.nu)
[1] TRUE
> is.ultrametric(test.tree.nu)
[1] TRUE

尝试从树中创建 hclust 对象后,出现错误:
> tree.phylo <- as.hclust.phylo(test.tree.nu)
Error in if (tmp <= n) -tmp else nm[tmp] :
  missing value where TRUE/FALSE needed
In addition: Warning message:
In nm[inode] <- 1:N :
  number of items to replace is not a multiple of replacement length

我意识到这是一个非常详细的问题,也许这些与某些软件包特别相关的问题最好在其他地方问,但我希望有人能够帮助我。

非常感谢所有帮助,

问候,

文件下载

Phylip 文件可以在这里下载
http://www.box.net/shared/rnbdk973ja

最佳答案

我可以在 Linux 上的 R 2.12.1 beta (2010-12-07 r53808) 下使用 2.6-2 版 ape 重现这一点,但您的代码在 2.5-3 版 ape 中有效。

这表明程序包中存在错误,您应该将问题告知开发人员以寻求专家建议。维护者 Emmanuel Paradis 的电子邮件地址位于 CRAN package for ape

关于R:ape/phylobase:无法将超度量、二叉树转换为 hclust 对象(警告消息),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4430778/

10-12 14:05