R 如何合并图并在新图中保存有向和无向组件?
我读过这本书 我有两个图形R 如何合并图并在新图中保存有向和无向组件?,r,igraph,R,Igraph,我读过这本书 我有两个图形gUed和gDed gUed是无向图,gDed是有向图。 我需要把这些图合并成一个。 我用边缘列表建立了这个联盟 library(igraph) gDed <- graph.formula(1-+2, 2-+3, 3-+4, 4-+5) gUed <- graph.formula(6--1, 7--2, 8--4, 9--5) EL = as_edgelist(gDed, names = TRUE) EL1 = as_edgelist(gUed, na
gUed
和gDed
gUed
是无向图,gDed
是有向图。
我需要把这些图合并成一个。
我用边缘列表建立了这个联盟
library(igraph)
gDed <- graph.formula(1-+2, 2-+3, 3-+4, 4-+5)
gUed <- graph.formula(6--1, 7--2, 8--4, 9--5)
EL = as_edgelist(gDed, names = TRUE)
EL1 = as_edgelist(gUed, names = TRUE)
ELU = rbind(EL, EL1)
ELU = ELU[!duplicated(ELU),]
GU = graph_from_edgelist(ELU)
## To check the result
par(mfrow=c(1,3))
plot(gDed)
plot(gUed)
plot(GU)
库(igraph)
gDed网络必须是有向的或无向的。也就是说,你可以稍微解决一下
与找到的答案类似,您创建了一个有向网络,并传入一个参数,该参数跟踪边是否有向。您可以在打印时使用此选项,或将网络子集:
E(gDed)$type <- "dir"
E(gUed)$type <- "undir"
g <- graph_from_data_frame(
rbind(
as_data_frame(gDed, what = "edges"),
as_data_frame(gUed, what = "edges")
)
)
plot(g,
edge.arrow.mode = ifelse(E(g)$type=="undir", "-", ">"))
g_sub1 <- subgraph.edges(g, eids = E(g)[E(g)$type=="undir"] )
plot(g_sub1,
edge.arrow.mode = ifelse(E(g_sub1)$type=="undir", "-", ">"))
g_sub2 <- subgraph.edges(g, eids = E(g)[E(g)$type!="undir"] )
plot(g_sub2,
edge.arrow.mode = ifelse(E(g_sub2)$type=="undir", "-", ">"))
E(gDed)$type你有很多图表吗?还是这三张?@Ashish,我有两张随机图。