首页 > 解决方案 > iGraph 中的度数函数

问题描述

degree在 iGraph R 中使用该函数并得到以下结果

G<-read.graph("sample.graphml", format="graphml") 
degree(G)            

> degree(G)
 [1]   2  18   6  15  64  64  11  36  53  63  54  54  47  72  86  46  55  17
[19]   9  14  13   6  14  17  14   8  16   8  20  13  14  17  13  17  13   2

这些值是为每个节点计算的度数,但它不显示相应的节点 ID。我查看了函数的描述,但仍然没有找到输出节点 ID 的参数。

dput(G)
structure(list(6, FALSE, c(1, 3, 5, 3, 4, 5, 5), c(0, 0, 1, 1, 
2, 2, 4), c(0, 1, 3, 4, 2, 5, 6), c(0, 1, 3, 2, 4, 5, 6), c(0, 
0, 1, 1, 3, 4, 7), c(0, 2, 4, 6, 6, 7, 7), list(c(1, 0, 1), structure(list(), .Names = character(0)), 
structure(list(id = c("6", "4", "2", "5", "1", "3")), .Names = "id"), 
list()), <environment>), class = "igraph")

> degree(G)            
[1] 2 3 2 2 2 3

标签: rigraph

解决方案


输出是使用其节点编号作为排序的每个节点的度数。如果您只需要节点号,则没有太多理由打印出数字 1 到 36。但是,如果可用, degree会将节点名称打印为输出中元素的名称。例如,

## Sample graph
library(igraph)
set.seed(1234)
G = erdos.renyi.game(8, 0.35)

## make sure that each node has a name
V(G)$name = LETTERS[1:8]

## Display degree
degree(G) 
A B C D E F G H 
1 2 2 4 5 1 2 3

添加以响应添加的示例

首先,您似乎没有使用当前版本的igraph. 我建议更新到当前版本。但就像我之前的示例一样,您可以通过使用name顶点的属性来获得所需的内容。使用您的示例,未显示节点名称。

degree(G)
[1] 2 3 2 2 2 3

但是,如果我转移idname,度数序列将标有名称。

V(G)$name = V(G)$id
degree(G)
6 4 2 5 1 3 
2 3 2 2 2 3 

第一行是 id/name。最下面一行是学位。


推荐阅读