我正在使用igraph R包进行一些网络分析 .
我必须操纵一个 directed, weighted adjacency matrix (从具有函数_as_adjacency_matrix(...)_的igraph对象中提取,以获得一个不同的矩阵,该矩阵考虑了两个节点彼此共享的 incoming 链接的数量和权重 .
假设4个节点:节点A连接到节点C,节点B连接到A,节点C连接到节点A和B,节点D连接到A,所有链路都被定向 .
在此设置中,A和B共享来自C的内向链接,但没有其他节点共享任何传入链接 .
因此,我想创建一个能够从原始项创建 directed weighted adjacency list 的例程,其中每个条目[i,j]表示节点i,j彼此共享的传入边缘值的总和 .
结果必须是对称的逻辑矩阵(仅真/假值),在得到的“公共链接”邻接矩阵的前面,而是指向的 .
回到我做的例子,只有条目[A,B]和[B,A]应该有一个非零值,等于来自共享连接节点的向内边缘的值([A,B]应该包含[ C - > A]值,而[B,A]应该包含[C - > B]值 .
任何关于它的建议都将非常感激
1 回答
有趣但有点模糊定义的问题 . 我在理解你想要的输出时遇到了一些麻烦,但我想我明白了 . 我在下面的第一次尝试中留下了代码 . 您提供的示例数据我称之为
g
.无论哪种方式,我认为你可以从这个代码示例中继续下去 . 我非常愿意以更聪明的方式做到这一点而没有速度循环,但这是我能想到的最教学的代码,因为我不确定所需的输出 .
如果我正确理解你的问题,你要求的内容将在列表ul中输出
ul[[x]][[3]]
包含图表的E(),其中边缘从节点i(ul[[x]][[1]]
)到i和j共享传入的每个节点图表中的链接g
.