Матрица смежности от кадра данных с igraph R - PullRequest
2 голосов
/ 06 марта 2019

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

У меня есть фрейм данных (df), который содержит три столбца.Первый - это избиратель, второй - пользователь, получивший голос, а третий - голос (-1 или 1 в зависимости от отрицательного или положительного голоса соответственно).

> head(df)

     voter        user      vote
1    ludraman     cjcurrie     1
2    blankfaze    olivo       -1
3    gzornenplatz cjcurrie     1
4    orthogonal   olvion       1
5    andrevan     cerviz       1
6    texture      cjcurrie     1

IЯ хочу создать граф с помощью igraph, но сначала мне нужно получить матрицу смежности из df.

Я пытался с библиотекой sharpshootR

A <- component.adj.matrix(df[, c(1,2)], mu=df[, 1], co=df[, 2], wt=df[, 3])

Есть ли простой способ получить эту матрицу смежности?используя библиотеку igraph?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 06 марта 2019

Это решение работает для моей проблемы:

edge_list <- training_edges[df].                # create a edge list
G <- graph.data.frame(edge_list, directed=TRUE) # create the graph

A <- as_adjacency_matrix(G,type="both",names=TRUE,
sparse=FALSE, attr = "vote")                    # create the adjacency matrix

Где A - матрица смежности.

0 голосов
/ 06 марта 2019

Если я правильно понял вашу проблему, вы можете использовать graph_from_data_frame из igraph:

Данные

d <- structure(list(voter     = c("ludraman", "blankfaze", "gzornenplatz", "orthogonal", 
                                  "andrevan", "texture"), 
                    user      = c("cjcurrie", "olivo", "cjcurrie", "olvion", "cerviz", "cjcurrie"), 
                    vote      = c(1L, -1L, 1L, 1L, 1L, 1L)), 
                    row.names = c("1", "2", "3", "4", "5", "6"), class = "data.frame")

igraph

library(igraph)
g <- graph_from_data_frame(d)
plot(g)

igraph of relations

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

...