Finding habe ich einige Grafiken in einem data.table gespeicherten Daten, die die Übergänge zwischen einigen Knoten wie beschreiben:die Mindestabstände/Ebenen zwischen den Knoten in einem Diagramm wie Datenrahmen in R
lfs = data.table(from = c(NA, 'x', 'x', 'y'), to = c('x', 'y', 'p', 'z'), level = 0)
lfs
# from to level
#: NA x 0
#: x y 0
#: x p 0
#: y z 0
Wen möchte ich finden die Entfernung jedes Knotens vom Startknoten NA
. Das erwartete Ergebnis ist wie folgt:
# from to level
#: NA x 1
#: x y 2
#: x p 2
#: y z 3
ich dieses Problem in einer sehr umständlichen Weise lösen können, wie folgt:
lfs[ is.na(lfs$from) ]$level = 1
target = lfs$from %in% (lfs[ lfs$level == 1 ]$to)
lfs[target]$level = 2
target = lfs$from %in% (lfs[ lfs$level == 2 ]$to)
lfs[target]$level = 3
Ich denke, es einfacher und generische Lösungen höchstwahrscheinlich durch die Verwendung Graph Manipulation sein sollte Funktionen in Graph-Bibliotheken wie zB igraph, aber ich kenne sie nicht sehr gut und ich weiß nicht, wonach ich in diesen Bibliotheken gezielt suchen soll.
Wie kann ich die erwartete Ausgabe mit Graphalgorithmen erhalten oder denken Sie an andere einfachere Lösungen?
verwenden Vielen Dank, in der Tat das Problem dadurch behoben. Warum schreibst du es nicht als Antwort anstatt als Kommentar? Also, jeder wird es sofort sehen können. –