Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中有向边图的构造_R_Igraph_Directed Graph - Fatal编程技术网

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")])