首页 > 解决方案 > 根据二分网络边列表中的公共顶点创建新边列表

问题描述

我有两组节点的边缘列表,如下所示:

edgelist <- data.frame(from = sample(letters, 1000, replace = T), 
                       to = sample(1:50, 1000, replace = T))

我需要做的是根据节点的公共边分别为节点上的每个集合生成一个图。例如,如果在“a”和“g”中都找到边列表中的“48”,我想在字母加权图中有一个“ag”边......数字图也是如此。如果您帮助创建边缘列表或图表,我将不胜感激。

标签: rgraph-theoryedge-list

解决方案


首先,请注意您可能希望将示例包装edgelistunique()调用中以避免重复边缘。

如果我理解得很好,您可以通过简单的自连接来解决您的问题(尽管igraph中可能有一种更有效的开箱即用方法)。例如,使用dplyr

library(dplyr)

letters_edges <- edgelist %>%
  left_join(edgelist, by = "to") %>%
  select(from.x, from.y) %>%
  unique %>%
  filter(from.x < from.y)

推荐阅读