用R包清理图形" igraph"

时间:2015-03-10 10:27:04

标签: r graph igraph

我需要在R中“清理”图形。通过清理,我的意思是我需要删除所有未与特定节点链接的节点。例如,如果在我的图表中有4个节点,则包含这些边:

  • 1到3

  • 1到2

  • 4到2

我想只保留与边缘1连接的节点加上边缘1本身,所以说我需要删除边缘4。

有没有办法用igraph构建一个算法,可以为非常非常大的图形(如超过1000个节点和1 000 000个边缘)做到这一点?

1 个答案:

答案 0 :(得分:1)

使用subcomponentinduced.subgraph

edges_df <- data.frame(from = c(1, 1, 4), to = c(3, 2, 2))
g1 <- graph.data.frame(edges_df, directed = TRUE)

g2 <- induced.subgraph(g1, subcomponent(g1, "1", mode = "out"))

至于&#34;大&#34;图:1000不是那么大。在我的笔记本电脑上:

system.time({
  g3 <- graph.full(n = 1000, directed = TRUE)
  g4 <- induced.subgraph(g3, subcomponent(g3, "1", mode = "out"))
})
# user  system elapsed 
# 0.47    0.10    0.57