问题与igraph度()函数

问题描述:

我有一个N×2整数表称为游戏[,]。节点/边缘的表被转换成一个曲线图:问题与igraph度()函数

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

(I认识到,不是所有的选择是必要的。)

我遇到的问题是,度分布似乎是IN-只有学位。例如,游戏文件具有行:

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.data.frame时,假定数据框的前两列包含符号顶点名称(即,不要求它们必须是整数);这些将被分配到name顶点属性,并且igraph将简单地组成从0到N-1的ID。

所以,让我们假设你有一个N×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 

希望这会有所帮助。

+0

完美!这不是我所希望的,因为这意味着在我的结尾有些事情是错误的。)再次感谢。 – Aengus 2012-03-10 22:20:23

您创建了一个无向图。这样的图表中没有进出学位。从igraph文档link你可以得到大致的想法。你deg.net会返回一个向量与你的图表度(每节点),与此类似:

[1] 2 1 1 1 1 1 1

如果你想获得的学位一个特定的节点(在我们的例子中它是103),你必须指定节点(appearence_order-1)。在您的例子中,你正在寻找(1st_node-1),它的节点0。所以你必须键入:

度(净值,0,模式=“总”,循环= FALSE)

将返回节点0的度数为“7”。