3

我正在努力从孩子列表中创建一棵纽维克树。我有一个列表列表,其中列表名称是父名称,列表元素是孩子。这是一个例子:

$`825`
[1] 824

$`824`
[1] 823

$`823`
[1] 822

$`822`
[1] 821

$`821`
[1] 820 777

$`820`
[1] 819 816 789 787 785 783

$`789`
[1] 788

$`787`
[1] 786

$`785`
[1] 784

$`783`
[1] 782

$`777`
[1] 776

因此,我想要的输出是 newick 格式的 phylo 树,如下所示:

825(824(823(822(821(820(819,816,789(788),787,785(784),783(782)),777(776)))))

做这个的最好方式是什么?一种方法是编写一个深度遍历一阶并创建树的递归函数。但是在 R 中,递归被认为是不好的。

谢谢。

4

1 回答 1

1

如果您正在寻找预装解决方案,我相信 bioconductor/ape 库有一个列表 -> newick 转换器

http://www.r-phylo.org/wiki/HowTo/InputtingTrees

否则,我前段时间写了一些代码来为邻居加入算法做这个;它非常简洁(在紧迫的期限内编写),但也许会有所帮助。

https://github.com/rgrannell1/NJ/blob/master/main.R

希望有所帮助

于 2013-04-05T06:00:07.913 回答