【问题标题】:Degree function in iGraphiGraph 中的度数函数
【发布时间】:2018-08-06 04:44:22
【问题描述】:

我在 iGraph R 中使用degree 函数,结果如下

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

【问题讨论】:

  • “node id”是指“name”吗?因为否则,结果是有序的,即id为1的节点度数为2,id为2的节点度数为18,以此类推。
  • 我正在尝试打印名称,因为只有这样,我才能看到哪个节点的度数最高

标签: r igraph


【解决方案1】:

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

## 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

但如果我将id 转移到name,度数序列会标有名称。

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

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

【讨论】:

  • 我不确定为什么它没有打印出节点名称。我的网络数据是一个边缘列表,因此每一行都表示一个边缘。
  • 能否请您 dput(G) 并将结果粘贴到问题中,以便我可以准确看到您所看到的内容?
  • 问题已更新。输出有太多行,所以我粘贴最后几行。
  • 不幸的是,我无法从中制作图表。您能否制作一个较小的示例,以便可以将完整输出粘贴到问题中?
  • 我创建了一个小的“桥”网络数据,并使用dput(G) 的输出以及degree(G) 的输出更新了问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-18
  • 1970-01-01
  • 2012-08-31
  • 1970-01-01
相关资源
最近更新 更多