R中有向边图的构造
我有一个如下所示的数据集:R中有向边图的构造,r,igraph,directed-graph,R,Igraph,Directed Graph,我有一个如下所示的数据集: PostID UserID ReplyTo 1 11 NA 2 12 1 3 11 2 4 13 NA 5 12 4 我想要一个有边的有向图:12->11,11->12,12->13 这样做的目的是,最终我能够拥有一个用户ID列表,并在其中添加不同的中心 按照我尝试的方式,我只能在PostID和UserID之间生成一个图表 library(igraph) D <- da
PostID UserID ReplyTo
1 11 NA
2 12 1
3 11 2
4 13 NA
5 12 4
我想要一个有边的有向图:12->11,11->12,12->13
这样做的目的是,最终我能够拥有一个用户ID列表,并在其中添加不同的中心
按照我尝试的方式,我只能在PostID和UserID之间生成一个图表
library(igraph)
D <- data.frame(Data$PostID, Data$ReplyTo)
FinalEdges<-D[complete.cases(D),]
FinalNetwork <- graph.data.frame(FinalEdges, directed = TRUE)
plot(FinalNetwork, vertex.label = V(FinalNetwork)$PostID)
您需要重新调整输入数据的形状以连接这些对。如果这是您的示例输入数据
dd<-structure(list(PostID = 1:5, UserID = c(11L, 12L, 11L, 13L, 12L
), ReplyTo = c(NA, 1L, 2L, NA, 4L)), .Names = c("PostID", "UserID",
"ReplyTo"), class = "data.frame", row.names = c(NA, -5L))
以及ReplyIo列重复出现的警告。但这不是一个真正的问题。我们只需要两个UserID列。我们可以把它们变成一个图表
library(igraph)
gg <- graph.data.frame(mm[,c("UserID.x","UserID.y")])
库(igraph)
gg获得所需图形的一种方法是定义一个to
列,用于graph.data.frame
。所以dat$to
dd<-structure(list(PostID = 1:5, UserID = c(11L, 12L, 11L, 13L, 12L
), ReplyTo = c(NA, 1L, 2L, NA, 4L)), .Names = c("PostID", "UserID",
"ReplyTo"), class = "data.frame", row.names = c(NA, -5L))
mm<-merge(dd, dd, by.x="ReplyTo", by.y="PostID")
ReplyTo PostID UserID.x UserID.y ReplyTo
1 1 2 12 11 NA
2 2 3 11 12 1
3 4 5 12 13 NA
library(igraph)
gg <- graph.data.frame(mm[,c("UserID.x","UserID.y")])