从一组节点和集合生成一组唯一的完整无向图
Generate a unique set of complete undirected graphs from a tibble of nodes and sets
我有一个 tibble
这样的:
Nodes <- tibble(
Set = c("A","A","A","B","B","C"),
name = c(1,2,3,4,6,5)
)
我想生成一个图表,其中 Nodes
设置为 nodes
并且
Edges <- tibble(
from = c(1,1,4),
to = c(2,3,6)
)
为edges
。当然,我想将此过程推广到任何 Nodes
。我认为我可以使用 purrr
编写代码,但我希望 igraph
更快且更简单。
从理论上讲,这与以下内容没有什么不同:
Nodes %>% group_as(Set) %>% complete_graph(by = "name")
但我不确定 complete_graph()
这样的命令是否存在。它存在 play_islands()
,但它的工作方式不同,它假定 n(Set)
将被修复。
从 igraph
开始尝试 make_full_graph
with(
Nodes,
do.call(
rbind,
Map(
function(v) {
get.data.frame(
set_vertex_attr(
make_full_graph(length(v)),
name = "name", value = v
)
)
},
split(name, Set)
)
)
)
这给出了
from to
A.1 1 2
A.2 1 3
A.3 2 3
B 4 6
我有一个 tibble
这样的:
Nodes <- tibble(
Set = c("A","A","A","B","B","C"),
name = c(1,2,3,4,6,5)
)
我想生成一个图表,其中 Nodes
设置为 nodes
并且
Edges <- tibble(
from = c(1,1,4),
to = c(2,3,6)
)
为edges
。当然,我想将此过程推广到任何 Nodes
。我认为我可以使用 purrr
编写代码,但我希望 igraph
更快且更简单。
从理论上讲,这与以下内容没有什么不同:
Nodes %>% group_as(Set) %>% complete_graph(by = "name")
但我不确定 complete_graph()
这样的命令是否存在。它存在 play_islands()
,但它的工作方式不同,它假定 n(Set)
将被修复。
从 igraph
make_full_graph
with(
Nodes,
do.call(
rbind,
Map(
function(v) {
get.data.frame(
set_vertex_attr(
make_full_graph(length(v)),
name = "name", value = v
)
)
},
split(name, Set)
)
)
)
这给出了
from to
A.1 1 2
A.2 1 3
A.3 2 3
B 4 6