Как создать атрибут type для двудольного графа с помощью igraph inR
У меня есть данные двухлинейного сетевого края, такие как tmp
ниже:
tmp <- read.table(text="PersonID CompanyID
P1 C000001
P2 C000001
P3 C000001
P4 C000001
P5 C000001
P6 C000002
P7 C000002
P8 C000002
P9 C000003
P10 C000003
P11 C000003
P12 C000003",header=TRUE)
# make a graph using this data
el <- graph.edgelist(as.matrix(tmp))
И я сделал это, чтобы добавить атрибут "тип" для создания двудольного графа в igraph
V(el)$type <- V(el)$name %in% el[,1]
Но оказалось, что тип "ложь" и имена не могут совпадать. Кто-нибудь знает, что здесь происходит не так?
> table(V(el)$type)
FALSE
15
> V(el)$name
[1] "P1" "C000001" "P2" "P3" "P4" "P5" "P6" "C000002"
[9] "P7" "P8" "P9" "C000003" "P10" "P11" "P12"
1 ответ
Вместо el[,1]
использовать get.edgelist(el)[,1]
, el[,1]
не является первым столбцом списка границ, как вы могли ожидать; Индексирование графического объекта, как вы сделали, на самом деле даст вам кусочки матрицы смежности.