具有相同属性的矩阵节点转换为 igraph 中的矩阵

matrix node with same attribute transformation to matrix in igraph

我在 igraph 中有一个矩阵,如上图中的第一个。数字表示合作次数。我有一个属性,作为第二个。我想要一个代码,它可以自动给我 igraph 中的第三个矩阵或 R 中的其他矩阵。thx in adavnce。

igraph方法

您可以试试下面的代码(不需要igraph

> +((with(a, outer(type, type, `==`)) * mat) > 0)
  A B C
A 0 0 1
B 0 0 0
C 1 0 0

igraph接近

如果您仍然想使用 igraph,一种可能的选择是

graph_from_adjacency_matrix(mat > 0, mode = "undirected") %>%
    get.data.frame() %>%
    filter(a[from, ] == a[to, ]) %>%
    graph_from_data_frame(directed = FALSE, vertices = row.names(a)) %>%
    get.adjacency(sparse = FALSE)

这给出了

  A B C
A 0 0 1
B 0 0 0
C 1 0 0

数据

mat <- `dimnames<-`(
    matrix(c(0, 2, 3, 2, 0, 1, 3, 1, 0), 3),
    rep(list(LETTERS[1:3]), 2)
)

a <- `rownames<-`(data.frame(type = c("edu", "company", "edu")), LETTERS[1:3])