来自数据帧的加权图

min*_*noo 2 r igraph weighted-graph

我有一个边缘列表,我想将其转换为加权图。我用下面的代码:

edgelist <- read.table(text = "
V1 v2 weights
A B 1
B C 8
C D 6
D E 9
C F 12
F G 15",header=T)


g<-graph_from_data_frame(edgelist)
g
Run Code Online (Sandbox Code Playgroud)

它将权重作为边缘的属性。但是,当我想检查它是否加权时:

is_weighted(g)
Run Code Online (Sandbox Code Playgroud)

它返回了我FALSE。如何将其更改为TRUE

phi*_*ver 5

你很亲密 如果您使用is_weighted阅读文档,则可以阅读以下内容:

在igraph中,边缘权重是通过称为'weight'的edge属性表示

现在,如果我们将您的权重列的名称更改为weight,它将起作用。

edgelist <- read.table(text = "
V1 v2 weight
                       A B 1
                       B C 8
                       C D 6
                       D E 9
                       C F 12
                       F G 15",header=T)
g <- graph_from_data_frame(edgelist)
is_weighted(g)
[1] TRUE
Run Code Online (Sandbox Code Playgroud)

如果由于某种原因而无法重命名列,则可以始终手动设置权重,如下所示:

# based on the weights column if you can't rename input data.frame
g <- set_edge_attr(g, "weight", value= edgelist$weights)
is_weighted(g)
[1] TRUE
Run Code Online (Sandbox Code Playgroud)