您应该记住的一件事是,大多数 igraph 函数通过它们的 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
实际上在图中变成了顶点零:
> degree(g, 0, mode="out")
4
> degree(g, 0, mode="in")
3
> degree(g, 0, mode="all")
7
据我所知,degree
如果图中调用了顶点属性,也可以直接使用顶点名称name
,因此您也可以这样做:
> degree(g, "103", mode="in")
3
希望这可以帮助。