我有一个N x 2整数表,称为游戏[,].节点/边的表转换为图形:
net <- graph.data.frame(as.data.frame(games), directed=FALSE)
deg.net <- degree(net, mode='total', loops=FALSE)
Run Code Online (Sandbox Code Playgroud)
(我意识到并非所有选项都是必要的.)
我遇到的问题是学位分布似乎只适用于学位.例如,游戏文件包含以下行:
103 86
24 103
103 2
92 103
87 103
103 101
103 44
Run Code Online (Sandbox Code Playgroud)
然而,igraph表示节点103的程度为"3",应该为"7".
任何有关我所缺少的信息都将受到赞赏.
您应该记住的一件事是,大多数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)
Run Code Online (Sandbox Code Playgroud)
首先,我们在按行划分矩阵之后创建一个图形:
> g <- graph(as.vector(t(edges)))
Run Code Online (Sandbox Code Playgroud)
这将为您提供一个包含7条边的有向图,并且顶点103的out/in-degrees将如预期的那样:
> ecount(g)
7
> degree(g, 103, mode="out")
4
> degree(g, 103, mode="in")
3
> degree(g, 103, mode="all")
7
Run Code Online (Sandbox Code Playgroud)
如果使用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"
Run Code Online (Sandbox Code Playgroud)
这表明名称中的顶点103实际上在图形中变为顶点零:
> degree(g, 0, mode="out")
4
> degree(g, 0, mode="in")
3
> degree(g, 0, mode="all")
7
Run Code Online (Sandbox Code Playgroud)
据我所知,degree如果图中有一个顶点属性,也可以直接使用顶点名称name,所以你也可以这样做:
> degree(g, "103", mode="in")
3
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
6967 次 |
| 最近记录: |