2014-01-12 1 views
1

Я выполняю SNA с пакетом igraph R и вам необходимо сохранить некоторые сетевые свойства узлов вместе с идентификатором каждого узла в файл для дальнейшего анализа. То есть документ с первым столбцом, представляющим идентификатор узла, и другие столбцы его свойств. Я в порядке с мерами центральности, но и другими функциями igraph как транзитивность, например, возвращать только вектор с расчетными сетевыми свойствами как вПечать сетевых свойств узлов с igraph для R

transitivity(graph,type=c("local")) 

[1] 0.4285714 0.3976608 0.5454545 0.7142857 0.3928571 0.4640523 
[7] 0.5620915 0.6095238 0.3571429 0.4743590 0.3416667 0.6023392 
[13] 0.6000000 0.5228758 0.4771242 0.4835165 0.3246753 0.5000000 
[19] 0.3636364 0.5777778 0.3571429 0.4487179 0.5238095 0.4857143 

То, что я хотел бы сделать это, чтобы иметь возможность добавить транзитивность к следующий кадр данных мер центральности:

metrics <- data.frame(
    deg=degree(graph) 
    bet=betweenness(graph) 
    clo=closeness(graph) 
    eig=evcent(graph)$vector 
) 

, который возвращает:

deg  bet  clos  eig 
001 7 8.6046215 0.009523810 0.1697311 
002 19 48.2885279 0.012500000 0.7012156 
003 12 10.5285962 0.011111111 0.4280625 
004 15 8.6161170 0.011363636 0.7729130 

Я признателен за любую помощь. Благодаря!

+1

У меня вопрос, как добавить вектор в data.frame? Используйте 'cbind' – agstudy

+0

Ну, я не совсем понял, как правильно сформулировать свой вопрос, и решение Скотта, похоже, работает нормально. Думаю, я мог бы использовать cbind, но, может быть, порядок узлов был бы не сохранен? В любом случае, спасибо за ваш комментарий @agstudy, это заставило меня подумать о возможном решении подобной проблемы. – Milo

ответ

1

Просто добавьте функцию к вашему data.frame:

metrics <- data.frame(
    deg=degree(graph), 
    bet=betweenness(graph), 
    clo=closeness(graph), 
    eig=evcent(graph)$vector, 
    tra=transitivity(graph,type=c("local")) 
) 
+1

Cheers Scott. Итак, если я хорошо понимаю, все идентификаторы узлов хранятся в одном порядке для всех функций, применяемых к графику? – Milo

+0

предположительно да, тем более, что функции не возвращают то, на каком узле каждая мера принадлежит –

0

Вы можете добавить V (граф) $ имя для фрейма данных, чтобы получить идентификаторы, связанные с мерами.

metrics <- data.frame(
    id = V(graph)$name 
    deg=degree(graph), 
    bet=betweenness(graph), 
    clo=closeness(graph), 
    eig=evcent(graph)$vector, 
    tra=transitivity(graph,type=c("local")) 
)