问题与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
希望这会有所帮助。
您创建了一个无向图。这样的图表中没有进出学位。从igraph文档link你可以得到大致的想法。你deg.net会返回一个向量与你的图表度(每节点),与此类似:
[1] 2 1 1 1 1 1 1
如果你想获得的学位一个特定的节点(在我们的例子中它是103),你必须指定节点(appearence_order-1)。在您的例子中,你正在寻找(1st_node-1),它的节点0。所以你必须键入:
度(净值,0,模式=“总”,循环= FALSE)
将返回节点0的度数为“7”。
完美!这不是我所希望的,因为这意味着在我的结尾有些事情是错误的。)再次感谢。 – Aengus 2012-03-10 22:20:23