gpt4 book ai didi

igraph - igraph degree( ) 函数的问题

转载 作者:行者123 更新时间:2023-12-04 00:46:50 27 4
gpt4 key购买 nike

我有一个 N x 2 的整数表,称为 games[ , ]。节点/边表转换为图形:

net <- graph.data.frame(as.data.frame(games), directed=FALSE)
deg.net <- degree(net, mode='total', loops=FALSE)

(我意识到并非所有选项都是必要的。)

我遇到的问题是学位分布似乎只适用于学位。例如,游戏文件包含以下行:

103 86
24 103
103 2
92 103
87 103
103 101
103 44

然而 igraph 指示节点 103 的度数为“3”,而它应该为“7”。

任何对我遗漏的见解都将不胜感激。

最佳答案

您应该记住的一件事是,大多数 igraph 函数通过 ID 引用顶点,这些 ID 只是从 0 到 N-1 的整数,其中 N 是图中的顶点数。如果您有一个 N x 2 整数表(包含从零开始的顶点索引)并且您希望 igraph 使用整数作为顶点 ID,则可以在展平矩阵后简单地使用 graph 构造函数按行放入向量中。当您使用 graph.data.frame 时,假定数据框的前两列包含符号顶点名称(即不要求它们必须是整数) ;这些将被分配给 name 顶点属性,igraph 将简单地组成从 0 到 N-1 的 ID。

因此,假设您有一个 N x 2 矩阵,每条边一行:

> edges <- matrix(c(103, 86, 24, 103, 103, 2, 92, 103, 87, 103, 103, 101, 103, 44), ncol=2, byrow=T)

首先我们在按行展平矩阵后创建一个图形:

> g <- graph(as.vector(t(edges)))

这为您提供了一个具有 7 条边的有向图,并且顶点 103 的出/入度将符合预期:

> ecount(g)
7
> degree(g, 103, mode="out")
4
> degree(g, 103, mode="in")
3
> degree(g, 103, mode="all")
7

如果将 graph.data.frame 与上述矩阵一起使用,igraph 将构造一个图,其中矩阵中的数字存储在 name 顶点属性中:

> g <- graph.data.frame(as.data.frame(edges))
> V(g)$name
[1] "103" "24" "92" "87" "86" "2" "101" "44"

这表明名称为 103 的顶点实际上变成了图中的顶点 0:

> degree(g, 0, mode="out")
4
> degree(g, 0, mode="in")
3
> degree(g, 0, mode="all")
7

据我所知,如果图中有一个名为 name 的顶点属性,degree 也可以直接使用顶点名称,因此您也可以这样做:

> degree(g, "103", mode="in")
3

希望这对您有所帮助。

关于igraph - igraph degree( ) 函数的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9641650/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com