Как превратить взвешенный список редакторов в матрицу смежности в r - PullRequest
1 голос
/ 05 мая 2020

У меня есть взвешенный список ребер, и я хочу преобразовать его в матрицу смежности. Есть ли простой код, который я могу использовать для этого?

Данные выглядят так:

  From To    Weight
1    a  a 0.3274570
2    b  a 0.7188648
3    a  b 0.1097450
4    b  b 0.9054419

Вот код репликации:

edgelist <- setNames(cbind(expand.grid(letters[1:2], letters[1:2]), runif(4)), c("From", "To", "Weight"))
edgelist

Ответы [ 2 ]

3 голосов
/ 05 мая 2020

Один из подходов - использовать get.adjacency из пакета igraph.

library(igraph)
mygraph <- graph.data.frame(edgelist)
get.adjacency(mygraph, sparse = FALSE, attr='Weight')
#          a         b
#a 0.3274570 0.1097450
#b 0.7188648 0.9054419

Хотя, безусловно, можно просто преобразовать данные в матрицу, может быть полезно подготовиться к использованию остальные функции этого пакета.

1 голос
/ 05 мая 2020
as.matrix(tidyr::spread(edgelist, "To", "Weight")[-1])
...