2016-03-26 5 views
1

Я работаю со списком сетевых графиков (т. Е. 1000+ матриц смежности), которые я анализирую с помощью пакета igraph. Графы хранятся в разделенном файле, причем каждый граф имеет уникальный идентификатор.igraph, r: список узлов для списка матриц для списка матриц

Я вычислил промежуточность центральности оценки отдельных узлов в каждой соответствующей графе, используя следующий код:

b <- function (b) betweenness(b, directed = FALSE, normalized = TRUE) 
Between <- lapply (listofgraphs, b) 

show(Between) #looks like this: 

$`35630`   #Graph ID 
1676 1741 1750  #Node ID 
0 1 0  #Scores 

$`35631` 
1738 1750 
0  1 

$`35633` 
1738 1750 4110 
0 0 0 

Теперь, что мне нужно, это один dataframe с colums для графа идентификаторов, узел идентификаторов и личности баллы за разницу. Как это:

Graph.ID Node.ID Betweenness 
35630  1676  0 
35630  1741  1 
35630  1759  0 
35631  1738  0 
35631  1750  1 
35631  1738  0  
35633  1750  0 
35633  et cetera ..... 

Я пытался unlist, rbind и такие, но по некоторым причинам я не могу получить эту работу. Если бы кто-то помог мне с этим, это было бы потрясающе!

+0

Попробуйте с '' melt' т.е. библиотеки (reshape2); melt (Between) ' – akrun

+0

Спасибо, что работало для идентификаторов Graph, но не с идентификаторами узлов. (т. Е. Я получаю два столбца с 'Graph.ID' и 'Betweenness') Есть ли способ включить оба? –

+0

Попробуйте «расплавить (lapply (Between, stack)) [- 2]' – akrun

ответ

0

Мы могли melt в list после stack ИНГ именованные vector сек в list

library(reshape2) 
melt(lapply(Between, stack))[-2] 
Смежные вопросы