将加权边缘列表转换为 r 中的未加权边缘列表

Posted

技术标签:

【中文标题】将加权边缘列表转换为 r 中的未加权边缘列表【英文标题】:turning a weighted edgelist into an unweighted in r 【发布时间】:2017-10-26 21:00:27 【问题描述】:

我有关于大学俱乐部每周社交时间可能和确实发生的每一次互动的数据

id1     id2   timestalked   date  
 1       2       1         1/1/2010
 1       3       0         1/1/2010
...
100     2        4         1/8/2010
...

我想首先将其加载为整个时间段的有向图以进行可视化。对于我做的加权矩阵。

library(igraph);
el <- read.csv("el.csv", header = TRUE);
G <- graph.data.frame(el,directed=TRUE);
A <- as_adjacency_matrix(G,type="both",names=TRUE,sparse=FALSE,attr="timestalked");

我认为删除 attr="timestalked" 会将权重 > 0 变为 1,但这似乎不起作用

library(igraph);
el <- read.csv("el.csv", header = TRUE);
G_unweight <- graph.data.frame(el,directed=TRUE);
A_unweight <- as_adjacency_matrix(G_unweight,type="both",names=TRUE,sparse=FALSE)

【问题讨论】:

【参考方案1】:

as_adjacency_matrix() 不提供任何参数来控制权重。请注意,它仅提供图中节点之间的边数。

要将加权边缘列表变成未加权边缘列表,试试这个

A <- as_adjacency_matrix(G, type = "both", names = TRUE, sparse = FALSE)
A[A > 1] <- 1

请注意,您还可以使用graph_from_adjacency_matrix() 函数通过指定weighted = NULL 从邻接矩阵创建未加权的igraph 图。

【讨论】:

我是否正确假设权重 0 不会在 A 和 B 之间建立联系?我的权重是交互次数,我希望 0 导致没有链接 是的,这是因为在使用as_adjacency_matrix()之后,0s导致节点之间没有交互(边)。

以上是关于将加权边缘列表转换为 r 中的未加权边缘列表的主要内容,如果未能解决你的问题,请参考以下文章

带加权边缘的 1/0 背包变化

图像边缘检测基于matlab灰度图像的积累加权边缘检测含Matlab源码 2010期

我们如何构建具有加权边缘的树

带加权边缘的最大分布

如何使用 R 为多路复用网络中的边缘着色

在非加权图中找到最短路径