Как создать атрибут типа для двудольного графа с помощью 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))

И я сделал это, чтобы добавить атрибут type для создания двудольного графа в 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"  

person user2309529    schedule 23.04.2013    source источник
comment
Если у вас V(el)$type <- V(el)$name %in% names(el[,1]), каждый элемент в V(el)$type равен TRUE. Но разве вы этого хотите? Мне пока непонятно, чего вы пытаетесь достичь.   -  person user1981275    schedule 23.04.2013


Ответы (1)


Вместо el[,1] используйте get.edgelist(el)[,1]. el[,1] - не первый столбец в списке ребер, как вы могли ожидать; индексирование объекта графа, как вы это делали, фактически даст вам срезы матрицы смежности.

person Tamás    schedule 23.04.2013