我是R和graphs的新手,我正在尝试使用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
我想用igraph创建一个图,但是首先我需要从df获取邻接矩阵。
我尝试了图书馆SharpshootR
A <- component.adj.matrix(df[, c(1,2)], mu=df[, 1], co=df[, 2], wt=df[, 3])
是否存在使用igraph库获取邻接矩阵的简单方法?
谢谢。
答案 0 :(得分:0)
如果我的问题没错,您可以使用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")
图形
library(igraph)
g <- graph_from_data_frame(d)
plot(g)
您可能可以使用tehre(给出完整的数据)来使用可视化中数据的其他部分(例如得分)。
答案 1 :(得分:0)
此解决方案适用于我的问题:
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是邻接矩阵。