Спасибо! Это работает - я сейчас работаю, чтобы реализовать это на объекте igraph с несколькими узлами, которые представляют
я естьigraph
объектg
сделано из кадра данныхdf
:
df <- data.frame(c(0,1,2,2,4), c(1,2,3,4,5), c(0.01, 0.03, 0.05, 0.01, 0.02))
colnames(df) <- c('parent_id', 'id', 'dt')
g <- graph_from_data_frame(df)
Края сделаны междуparent_id
а такжеid
.
> g
IGRAPH DN-- 6 5 --
+ attr: name (v/c), dt (e/n)
+ edges (vertex names):
[1] 0->1 1->2 2->3 2->4 4->5
Изменение толщиныdt
это атрибут ребра. Это можно рассматривать как изменение толщины айсберга «родителя» и «ребенка» (это моя проблема / проект).
list.edge.attributes(g)
[1] "dt"
визуализировать:
plot(g, edge.label=E(g)$dt)
Пример узлов и атрибута ребра'dt'
Мне нужно найти совокупную суммуdt
в каждом узле при спуске от родителя к потомку.
Если думать в терминах «предка», «родителя» и «потомка», это эквивалентно получению совокупной суммыdt
для всех предков в каждом «дочернем» узле.
кумулятивныйdt
назначен как атрибут ребра, пример ожидаемого результата
Это нормально, если эти совокупные значения назначены в качестве новых атрибутов узла или ребра или другой формы вывода.
Я пробовал 1)network.aggregate
функция вRNewsflow
пакет и 2)aggregate
функция вdata.tree
пакет.
Заранее благодарю за интерес и помощь.