2011-02-05 28 views
13

Pracuję z biblioteką iGraph i muszę przeprowadzić analizę statystyczną w sieci. Obliczam kilka zmiennych za pomocą iGraph, a następnie chcę użyć tych wskaźników jako zmiennej zależnej w kilku regresjach i atrybutów wierzchołków jako zmiennych niezależnych w modelu.Konwertuj obiekt igraph na ramkę danych w R

Tak, jestem w stanie załadować dane, uruchomić analizę igraph, ale mam problem z powrotem obiektu igraph z powrotem do ramki danych. Naprawdę nie potrzebuję zachować krawędzi, tylko każdy wierzchołek powinien zostać przekształcony w obserwację z atrybutami służącymi jako kolumny w każdym rzędzie.

Próbowałem następujące:

fg <- fastgreedy.community(uncompg, merges=TRUE) 
z<-which.max(fg$modularity) 
fgc<- community.to.membership(uncompg, fg$merges,z) 
names<-array(V(uncompg)$name) 
fccommunity<-array(fgc$membership) 
fcresult<-as.matrix(cbind(names,fccommunity)) 
compg <- set.vertex.attribute(compg, "community", value=fccommunity) 

uncompg<-simplify(as.undirected(compg)) 
hubscore<-hub.score(compg)$vector 
authscore<-authority.score(compg)$vector 

netdata<-as.data.frame(compg) 

Ale to rzuca się następujący błąd:

cannot coerce class '"igraph"' into a data.frame 

Każda pomoc lub wskazówki będą bardzo mile widziane.

+0

ja nie pracowałem z danych igraph wcześniej, ale jeśli można zapewnić prostą powtarzalną przykład, mógłby prawdopodobnie wyodrębnij dane z klasy igraph. –

+0

Masz na myśli pakiet igraph * * – Spacedman

+0

Tak, pakiet igraph. Nadal tracę żargon. –

Odpowiedz

19

Nie jestem do końca pewien, co próbujesz zrobić. Czy chcesz relacji jako ramka danych lub atrybut węzła jako ramka danych?

Aby wykonać dawniej:

> compg.edges <- as.data.frame(get.edgelist(compg)) 

Aby zrobić ten ostatni:

> compg.df <- as.data.frame(list(Vertex=V(compg), Community=fccommunity, Hubscore=hubscore, Authscore=authscore), stringsAsFactors=FALSE) 
+0

Tak naprawdę próbowałem zrobić później, ale ten pierwszy jest również bardzo użyteczny. Próbuję przenieść niektóre obliczone atrybuty sieciowe z powrotem do ramki danych, aby uruchomić na nich analizę logitową. –

+0

Przy okazji, uwielbiam Twojego bloga! –

Powiązane problemy