Допустим, я использую эту матрицу присоединения :
library(igraph)
A=c(1,1,0,0)
B=c(1,0,1,0)
C=c(1,0,1,0)
D=c(0,1,0,1)
E=c(0,0,1,1)
aff=matrix(c(A,B,C,D,E),nrow=5,byrow=TRUE)
dimnames(aff)=list(c("A","B","C","D","E"),c("Group1","Group2","Group3","Group4"))
, которая выглядит так:
## Group1 Group2 Group3 Group4
## A 1 1 0 0
## B 1 0 1 0
## C 1 0 1 0
## D 0 1 0 1
## E 0 0 1 1
Из которой вы можете производить (используя aff %*% t(aff)
) следующая матрица смежности:
## A B C D E
## A 2 1 1 1 0
## B 1 2 2 0 1
## C 1 2 2 0 1
## D 1 0 0 2 1
## E 0 1 1 1 2
Группы (например, Group1
, Group2
и т. Д.) Не сохраняются при преобразовании в матрицу смежности, то есть при построении:
m2=aff %*% t(aff)
g2=graph_from_adjacency_matrix(m2, "undirected", weighted=T, diag=F)
plot(g2, edge.width=E(g2)$weight)
Невозможно узнать, какое соединение с общей группой существует между A
и B
, A
и C
и т. Д. .
Мой вопрос : Есть ли какой-нибудь способ сохранить эту группирующую переменную, чтобы график мог быть сделан из матрицы смежности, позволяя пометить ребра как Group3
или * 1032? * вроде так ?:
Примечание: я планирую использовать visNetwork
, а не igraph
, но этот вопрос, как представляется, вытекает изсама структура данных, а не используемый пакет, поэтому я выбрал это для простоты.