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

问题描述

我有一个矩阵表示 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 进行了 29 次交互年。我将此对象作为数据帧存储在 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) 给予

enter image description here

数据

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