2013-04-23 2 views
0

У меня есть два режима данных в сети edgelist как tmp ниже:Как создать «типа» атрибут для двудольного графа с igraph МНО

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)) 

И я сделал это, чтобы добавить «тип» атрибут для создания двудольного график в графике

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" 
+0

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

ответ

1

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

 Смежные вопросы

  • Нет связанных вопросов^_^