从一组节点和集合生成一组唯一的完整无向图

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