Преобразовать объект igraph в фрейм данных в R - PullRequest
14 голосов
/ 05 февраля 2011

Я работаю с библиотекой iGraph и мне нужно провести статистический анализ в сети. Я вычисляю несколько переменных с помощью iGraph, а затем хочу использовать эти индикаторы в качестве зависимой переменной в нескольких регрессиях и атрибуты вершин в качестве независимых переменных в модели.

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

Я попробовал следующее:

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)

Но выдает следующую ошибку:

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

Любая помощь или указатели будут с благодарностью.

1 Ответ

23 голосов
/ 06 февраля 2011

Я не совсем уверен, что вы пытаетесь сделать. Вы хотите, чтобы отношения были в виде фрейма данных или атрибут узла в качестве фрейма данных?

Чтобы сделать первое:

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

Для последнего:

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