我已经使用 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/