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)))))

これを行う最善の方法は何ですか?1 つの方法は、深さ優先順でトラバースしてツリーを作成する再帰関数を作成することです。しかし、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 に答える