R中的邻接矩阵

use*_*793 6 r adjacency-matrix

我想从csv文件中找到包含如下信息的邻接矩阵:

A B 
1 2
1 3
1 4
2 5
3 7
Run Code Online (Sandbox Code Playgroud)

等等.有100个节点,但每次我尝试创建一个矩阵并随后绘制图形时,错误是它是一个非方形矩阵.有人能帮我解决R中的正确代码吗?

Bri*_*ggs 17

你有什么是边缘清单.您可以从中构建图形,然后将其转换为邻接矩阵:

library(igraph)

dat <- read.table(text="A B 
1 2
1 3
1 4
2 5
3 7", header=TRUE)

get.adjacency(graph.edgelist(as.matrix(dat), directed=FALSE))
Run Code Online (Sandbox Code Playgroud)

(使用__CODE__泰勒的回答).这给了

7 x 7 sparse Matrix of class "dgCMatrix"

[1,] . 1 1 1 . . .
[2,] 1 . . . 1 . .
[3,] 1 . . . . . 1
[4,] 1 . . . . . .
[5,] . 1 . . . . .
[6,] . . . . . . .
[7,] . . 1 . . . .
Run Code Online (Sandbox Code Playgroud)

  • @ user2203793 - 你知道如何从csv读取表格数据,例如`dat < - read.csv("path/to/file.csv",header = TRUE)`?布莱恩的答案非常有效,但他(非常合理地)假设你至少把你的数据读入了两列数据框架. (3认同)

Tyl*_*ker 7

也许是这样的:

dat <- read.table(text="A B 
1 2
1 3
1 4
2 5
3 7", header=TRUE)

x <- table(dat)
x %*% t(x)
Run Code Online (Sandbox Code Playgroud)

但也许你真的想要: igraph::graph.data.frame