如何将此邻接矩阵转换为图形对象?

How do I convert this adjacency matrix into a graph object?

我有一个矩阵表示 CSV 上的社交互动数据,如下所示:

    `0`   `1`   `2`   `3`   `4`   `5`   `6`   `7`   `8`   `9`
   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
 0     0    29     1     0     1     9     3     0     1     4
 1     1     0     0     1     3     1     0     1     1     1
 2     1     1     0    13     4     0     1     1    15     0
 3     3     0     1     0     1     1     7     1     1     1
 4     1     0     1    98     0     1     1     1     1     2
 5     2     5     1     1     3     0     2     0     1     5
 6     1     1     0     0    12     1     0     2     1     1
 7     1     1     0     1     0     1     9     0     1     2
 8     1     1    17    13   145     1    39     1     0     1
 9    88    23     1     5     1     2     1     7     1     0

我是社交网络分析的新手,所以我不确定我的术语,但这对我来说似乎是一个加权邻接矩阵,从这里我们可以说学生 1 与学生 0 在去年。我将此对象作为数据框存储在我的 RStudio 中,但是当我 运行 以下代码时,我收到以下错误:

> fn <- graph_from_adjacency_matrix(output, weighted = T)
Error in mde(x) : 'list' object cannot be coerced to type 'double'

我试过将它转换为矩阵,但这似乎也不起作用。任何有关这方面的帮助将不胜感激。

您需要先将您的 data.frame 转换为 matrix,然后再应用 graph_from_adjacency_matrix,例如,

g <- graph_from_adjacency_matrix(as.matrix(df),weighted = TRUE)

plot(g)给出

数据

> dput(df)
structure(list(``0`` = c(0L, 1L, 1L, 3L, 1L, 2L, 1L, 1L, 1L, 
88L), ``1`` = c(29L, 0L, 1L, 0L, 0L, 5L, 1L, 1L, 1L, 23L), ``2`` = c(1L,
0L, 0L, 1L, 1L, 1L, 0L, 0L, 17L, 1L), ``3`` = c(0L, 1L, 13L,
0L, 98L, 1L, 0L, 1L, 13L, 5L), ``4`` = c(1L, 3L, 4L, 1L, 0L,
3L, 12L, 0L, 145L, 1L), ``5`` = c(9L, 1L, 0L, 1L, 1L, 0L, 1L,
1L, 1L, 2L), ``6`` = c(3L, 0L, 1L, 7L, 1L, 2L, 0L, 9L, 39L, 1L
), ``7`` = c(0L, 1L, 1L, 1L, 1L, 0L, 2L, 0L, 1L, 7L), ``8`` = c(1L,
1L, 15L, 1L, 1L, 1L, 1L, 1L, 0L, 1L), ``9`` = c(4L, 1L, 0L, 1L,
2L, 5L, 1L, 2L, 1L, 0L)), class = "data.frame", row.names = c("0",
"1", "2", "3", "4", "5", "6", "7", "8", "9"))