#r #graph #igraph #statnet
Вопрос:
Мой набор данных выглядит следующим образом, я хочу создать сеть, но ошибка в том, что моя матрица смежности не симметрична, я новичок в R, я не знаю, как преобразовать мои данные в симметричную матрицу смежности, может ли кто-нибудь помочь мне, пожалуйста?
df2:
17 "RobertKennedyJr" "RobertKennedyJr "
18 "Real_Sheezzii" "Real_Sheezzii "
19 "Kellie_Martin" "Kellie_Martin "
20 "ThatsOurWaldo" "ThatsOurWaldo "
21 "SCN_Nkosi" "SCN_Nkosi "
22 "azsweetheart013" "azsweetheart013 "
23 "KYourrights" "KYourrights KathyConWom"
24 "GowTolson" " KathyConWom"
25 "Peterpu52451065" " KathyConWom"
26 "Jifchoppa" " KathyConWom"
27 "ClaraLpz3" " KathyConWom"
28 "Anna5705" " KathyConWom"
29 "Brizzle254" " KathyConWom"
30 "JackSpa02102454" " KathyConWom"
Код, который я пробовал
library("igraph")
library("network")
library("statnet")
relationsp <- as.matrix(df2)
relationsp
net <- as.network(x = mat, # the network object
directed = TRUE, # specify whether the network is directed
loops = FALSE, # do we allow self ties (should not allow them)
matrix.type = "adjacency" # the type of input
)
Комментарии:
1. Вы использовали
matrix.type = "adjacency"
, но ваша матрица выглядит так, как будто на самом деле она представляет собой список краев. Попробуйmatrix.type = "edgelist"
Ответ №1:
Если вы применяете igraph
пакет, вы должны использовать graph_from_data_frame
его для создания объекта graph net
, за которым следует get.adjacency
получение матрицы смежности, например,
> net <- graph_from_data_frame(dat)
> get.adjacency(net, sparse = FALSE)
RobertKennedyJr Real_Sheezzii Kellie_Martin GowTolson ClaraLpz3
RobertKennedyJr 1 0 0 0 0
Real_Sheezzii 0 1 0 0 0
Kellie_Martin 0 0 1 0 0
GowTolson 0 0 0 0 0
ClaraLpz3 0 0 0 0 0
KathyConWom 0 0 0 0 0
KathyConWom
RobertKennedyJr 0
Real_Sheezzii 0
Kellie_Martin 0
GowTolson 1
ClaraLpz3 1
KathyConWom 0