请你帮助我好吗?
我从事生态交互工作,其中一些被建模为多层网络(准确地说是多路网络)。
将这种数据输入到 R 的包igraph中的最佳方法是使用边缘和节点列表。不幸的是,我的合作者从来没有像这样组织他们的数据,而是将他们的数据组织成关联矩阵(二分网络)。
我总是要求他们至少将这些矩阵以相同的维度和相同的行列标签顺序组织起来,这样它们就可以很容易地组合起来。
手头有这些矩阵,然后我根据以下步骤运行一个长代码:
将两个或多个关联矩阵读入 R;
提取它们的边和顶点列表;
将边缘类型的信息添加到每个边缘列表中;
将顶点类的信息添加到每个顶点列表中;
分别合并那些边列表和顶点列表;
将这些合并列表读入 igraph 以创建多层图。
我正在寻找一个更简单的解决方案。我试过使用union函数,但它合并了图和它们的边,而不保留边类型的信息。看看这个例子中随机矩阵发生了什么:
number <- seq(1:10)
row <- "row"
rowlabels <- paste(row, number, sep = "")
column <- "col"
columnlabels <- paste(column, number, sep = "")
matrix1 <- matrix(data = rbinom(100,size=1,prob=0.5), nrow = 10, ncol = 10,
dimnames = list(rowlabels, columnlabels))
matrix2 <- matrix(data = rbinom(100,size=1,prob=0.5), nrow = 10, ncol = 10,
dimnames = list(rowlabels, columnlabels))
graph1 <- graph_from_incidence_matrix(matrix1, directed = F)
graph2 <- graph_from_incidence_matrix(matrix2, directed = F)
E(graph1)$type = "layer1"
E(graph2)$type = "layer2"
graph_multi <- union(graph1, graph2)
graph_multi
E(graph_multi)$type
有没有更简单的方法来组合两个或多个关联矩阵以在igraph中制作多层图?
非常感谢你!