【发布时间】:2016-07-06 06:00:12
【问题描述】:
我有一些图形数据存储在 data.table 中,描述了一些节点之间的转换,例如:
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
我想找到每个节点到起始节点NA的距离。预期结果如下:
# from to level
#: NA x 1
#: x y 2
#: x p 2
#: y z 3
我可以通过如下非常繁琐的方式解决这个问题:
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
我想应该有更简单和更通用的解决方案,很可能通过在 igraph 等图形库中使用图形操作函数,但我不太了解它们,我不知道具体在这些库中搜索什么。
如何使用图形算法获得预期的输出,或者您是否想到其他更简单的解决方案?
【问题讨论】:
-
谢谢,这确实解决了问题。你为什么不把它写成答案而不是评论?因此,每个人都可以立即看到它。