我想要合并11个不同的网络(UN)。我希望一个网络中的每个节点都应该用与其他网络相同的颜色,不同的颜色来表示,以便我可以识别哪个交互属于哪个网络。我正在使用以下代码逐个合并网络。
graph.union.by.name = function(g1, g2)
{
stopifnot(is.directed(g1) & is.directed(g2))
dv1 = get.vertices.as.data.frame(g1)
dv2 = get.vertices.as.data.frame(g2)
de1 = get.edges.as.data.frame(g1)
de2 = get.edges.as.data.frame(g2)
dv = safer.merge(dv1, dv2, all=TRUE)
de = safer.merge(de1, de2, all=TRUE)
g = graph.data.frame(de, directed=FALSE, vertices=dv)
return(g)
}
graph.union.by.name(g1,g2)
get.edges.as.data.frame
:此函数将图形边缘作为可合并的data.frame graph.union.by.name
:此函数创建两个图的并集。此函数根据名称属性正确地对图形进行联合,例如:g1或g2中的任何顶点都位于结果中的结果中的任何顶点g1或g2中。get.vertices.as.data.frame
:此函数将图形顶点作为data.frame safer.merge
:此函数检查一些可能导致错误合并结果的非常基本的陷阱,然后使用合并功能进行合并。我的问题是:
node A --> node B
(这意味着节点A激活节点B)或node A --| node B
(这意味着节点A禁止节点B)`。那么也可以在网络中添加这些信息吗?目前为了简单起见,我正在考虑无向网络,但我最终的目标是考虑有针对性的网络。示例:
library(igraph)
g1 <- graph.formula(a-b-c)
g2 <- graph.formula(b-c-d)
graph.union.by.name(g1,g2)
我希望g1
和g2
的节点颜色不同,然后我将为所有网络应用不同的颜色。