我试图用ape软件包在R中绘制一棵推断出的桉树系统发育树.

我得到以下错误:

> plot(euc.tr)
Error in plot.phylo(euc.tr) : tree badly conformed; cannot plot. Check the edge matrix.

我试着看euc.tr$edge想看看我是否能找到任何错误,但我很难理解矩阵中的数字应该如何与树对应,而且我不确定"严重一致"是什么意思,即使在搜索了谷歌和ape手册之后也是如此.

当我在Mesquit而不是R中打开nexus文件时,我看不到这棵树有任何异常.

R中的系统发育树对象摘要:

> summary(euc.tr)

Phylogenetic tree: euc.tr 

  Number of tips: 674 
  Number of nodes: 568 
  Branch lengths:
    mean: 2.436121 
    variance: 23.99677 
    distribution summary:
     Min.   1st Qu.    Median   3rd Qu.      Max. 
 0.000728  0.118585  0.477268  2.297975 50.513412 
  No root edge.
  First ten tip labels: Angophora_bakeri 
                        Angophora_costata
                        Angophora_exul
                        Angophora_floribunda
                        Angophora_hispida
                        Angophora_inopina
                        Angophora_melanoxylon
                        Angophora_robur
                        Angophora_subvelutina
                        Angophora_woodsiana
  No node labels.

边缘矩阵的头部(共1241行):

> head(euc.tr$edge)
     [,1] [,2]
[1,]  675  676
[2,]  676  677
[3,]  677  678
[4,]  678 6240
[5,]  678  679
[6,]  679  680

推荐答案

出现此问题的原因是边缘矩阵包含不正确的值:tail(euc.tr$edge)包含一个条目62283,但所有值都应指向一个尖端或内部 node ,因此应为<;nTip+nNode,即674+568=1242.

因此,您似乎在ape函数read.nexus()中遇到了一个错误,可能是由于函数难以解析Mesquit对nexus文件的格式造成的:具体来说,翻译表使用n###而不仅仅是数字(###)来指定如何翻译提示.我建议filing this as a bug个猿类包装.

与此同时,我通过编辑nexus文件,成功地绘制了这棵树:

  • 在第1377行,用文件第1497行的setTree命令中的单引号'中的内容替换所有内容after TREE tree_1 = .

  • 删除第1379行的END;命令之后的所有内容.

R相关问答推荐

无法在我的情节中表现出显着的差异

在R中列表的结尾添加数字载体

如何计算前一行的值,直到达到标准?

整数成随机顺序与约束R?

在R中无法读入具有Readxl和lApply的数据集

R函数‘paste`正在颠倒其参数的顺序

如何自定义3D散点图的图例顺序?

如何得到每四个元素向量R?

合并后返回列表的数据帧列表

如何从容器函数中提取conf并添加到ggplot2中?

基于R中的间隔扩展数据集行

正在导出默认的RStudio主题,还是设置括号 colored颜色 ?

在具有多个响应变量的比例堆叠条形图上方添加总计

计算使一组输入值最小化的a、b和c的值

根据r中每行中的日期序列,使用列名序列创建新列

在r中整理图例和堆叠图的问题

使用LAG和dplyr执行计算,以便按行和按组迭代

无法保存gglot的所有pdf元素

将`magick`对象转换为原始向量

向数据添加标签