私はRで木を作り、2つのノード間の距離を計算しようとしています。親と一緒にRで木を作る
データフレームツリーが似ているようにする:
tree.source <- data.frame(ID = 1:10, parentID = c(NA,1,1,1,2,2,2,3,4,4))
#ID parentID
#1 NA
#2 1
#3 1
#4 1
#5 2
#6 2
#7 2
#8 3
#9 4
#10 4
そしてまたこの
のようなツリー構造を作成するために願って、私はまたの間の距離を取得したいです2ノード。たとえば、ノード5とノード10の間の距離は、4〜5-2-1-4-10です。それらをリンクする4つのエッジがあります。ノード2とノード8の間の距離は、2-1-3-8まで3である。
ツリーは、例えば、ノード10のためのPathString
が1/4/10として与えられるべきで、各ノードのパスとdata.tree
パッケージを使用して構築することができるが、レベルの数が増加するときPathString
が非常に長くすることができ。木を作る良い方法はありますか?
alteranativeであります ' igraph'パッケージです。グラフを読み込んで作成するには 'g = graph_from_data_frame(na.omit(tree.source [2:1])));を使います。 plot(g、layout = layout_as_tree) 'を実行します。次に、単純または最短パスを見つける関数があります。 – user20650
これらの関数は 'get.shortest.paths(g、2、8、mode =" all ")'のようなもので、期待通りに '2/1/3/8'を返します。 – thelatemail
@ user20650、それは、ありがとう!また、より良いプロットを示しています。編集にも感謝します! –