用 R 包清理图表 "igraph"
Cleaning a graph with R package "igraph"
我需要 "clean" R 中的图表。通过清理,我的意思是我需要删除所有未与特定节点链接的节点。例如,如果在我的图表中有 4 个节点,具有这些边:
1 到 3
1 到 2
4比2
我只想保留与边 1 相连的节点加上边 1 本身,也就是说我需要删除边 4。
有没有办法用 igraph 构建一个算法来处理非常非常大的图(比如超过 1000 个节点和 1000000 条边)?
使用subcomponent
和induced.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"))
至于 "big" 图表: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
我需要 "clean" R 中的图表。通过清理,我的意思是我需要删除所有未与特定节点链接的节点。例如,如果在我的图表中有 4 个节点,具有这些边:
1 到 3
1 到 2
4比2
我只想保留与边 1 相连的节点加上边 1 本身,也就是说我需要删除边 4。
有没有办法用 igraph 构建一个算法来处理非常非常大的图(比如超过 1000 个节点和 1000000 条边)?
使用subcomponent
和induced.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"))
至于 "big" 图表: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