从磁盘加载外部图形作为边缘列表后,我想查看该图形的矩阵格式。这是我的步骤:
> rm(list=ls())
> data <- read.graph("c:\\temp\\graph.txt", format="edgelist")
> adjm <- data.matrix(data)
> adjm
IGRAPH D--- 18 28 --
>
> get.incidence(data)
Error in get.incidence(data) :
Not a bipartite graph, supply `types' argument
矩阵不打印。外部图的数据格式如(graph.txt):
0 7
2 7
3 0
3 2
3 4
4 9
5 1
5 6
6 7
7 12
8 2
8 3
8 14
10 6
11 12
12 13
13 8
14 15
14 13
如您所见,它只打印图形信息(节点数,直接或非直接)。如何将此图形打印为关联矩阵?或者如何为入射指令提供类型?谢谢
答案 0 :(得分:1)
igraph
函数使这非常简单。
g <- graph.ring(10)
g
IGRAPH U--- 10 10 -- Ring graph
+ attr: name (g/c), mutual (g/x), circular (g/x)
get.adjacency(g)
10 x 10 sparse Matrix of class "dgCMatrix"
[1,] . 1 . . . . . . . 1
[2,] 1 . 1 . . . . . . .
[3,] . 1 . 1 . . . . . .
[4,] . . 1 . 1 . . . . .
[5,] . . . 1 . 1 . . . .
[6,] . . . . 1 . 1 . . .
[7,] . . . . . 1 . 1 . .
[8,] . . . . . . 1 . 1 .
[9,] . . . . . . . 1 . 1
[10,] 1 . . . . . . . 1 .
如果您希望将get.adjacency
强制转换为二进制文件as.matrix
,请matrix
。
答案 1 :(得分:0)
如果您有一个2列矩阵M,那么我们可以创建一个0的方阵,并在连接的节点上用1填充
M <- M + 1
adj <- matrix(0, max(M), max(M))
adj[M] <- 1
答案 2 :(得分:0)
用法
get.incidence(your_graph, types = NULL, ......)
types:要使用的可选顶点类型向量而不是类型 顶点属性。如果图表没有,则必须提供此参数 类型顶点属性
让我们将数据框称为&#34; your_data_frame&#34;和你的图表为&#34; your_graph&#34;
您创建的图表看起来没有指定类型。它看起来像下面
> your_graph
IGRAPH DN-- 65 333 --
+ attr: name (v/c)
+ edges (vertex names):
将类型指定为二分的图表看起来像
> your_graph
IGRAPH DN-B 92 22325 --
+ attr: name (v/c), type (v/l)
+ edges (vertex names):
DN-B中的B代表二分
要指定类型,请执行以下操作
V(your_graph)$type = V(your_graph)$name %in% your_data_frame[,1]
注意:your_data_frame应该只有两列。如果不使用快速索引,如df [c(1,2)]
执行这些步骤后,您可以检查your_graph,现在应该指定类型
然后您可以继续使用
创建关联矩阵