r - 将边缘权重分配给 R 中的 igraph 对象

标签 r graph igraph

我有一个共现矩阵,我想将其转换为 igraph 对象。该矩阵具有三列 - node1node2freq

我使用 graph_from_edgelist 命令创建了图形。

g <- graph_from_edgelist(as.matrix(coOccurDf[1:n,1:2]), directed=F)

我现在需要为边缘分配权重。我尝试使用两个函数,它们似乎都在做同样的工作,但无济于事。

set.edge.attribute(g, "weight", index=E(g), coOccurDf[1:n,]$freq)

set_edge_attr(g, "weight", index=E(g), coOccurDf[1:n,]$freq)

这两个命令都不会引发错误,但是当我尝试使用以下命令查看权重时

E(g)$weight

它只是显示NULL

如有任何帮助,我们将不胜感激。

最佳答案

您可以按如下方式返回 igraph 对象的权重:

edge.attributes(g)$weight

E(g)$weight

您可以通过分配给以下任一对象来设置 igraph 对象的权重:

edge.attributes(g)$weight <- coOccurDf[1:n,]$freq

E(g)$weight <- coOccurDf[1:n,]$freq

要使用 set.edge.attribute 函数,它会返回一个分配了权重的新图。将其分配给对象 g 而不是将加权图打印到控制台:

g <- set.edge.attribute(g, "weight", index=E(g), coOccurDf[1:n,]$freq)

关于r - 将边缘权重分配给 R 中的 igraph 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33813835/

相关文章:

r - 使用 ggplot2 在一个图上绘制多个箱线图

在 dplyr 中重新编码给出错误 : Argument 2 must be named, 未命名

r - 从字符串变量创建虚拟变量

c++ - 分区飞盘 C++

java - n-顶点子图枚举的时间复杂度

R igraph Bipartite Graph,为什么我的权重没有显示?

r - iGraph 创建子图

regex - 如何在 R 中粘贴 "backslash-dot"(\.) 组合?

java - 将多个实时图表从 XChart 添加到 JPanel

Python-IGraph 属性