使用 R 从非对称(有向)邻接矩阵中查找所有节点的度数(中心性)

Finding degree (centrality) of all nodes from an asymmetric (directed) adjacency matrix with R

我有一个表示为邻接矩阵的简单网络示例。

我试图找出每个 node/vertex(人)

的度数

根据定义,节点的度是它与其他节点的连接数。按照惯例,在有向(即非对称)矩阵中,平局的发送方是行,平局的目标是列。

邻接矩阵(对角线为 1):

matrix(c(1,0,1,0,1,1,1,0,1,1,1,1,0,0,1,1), ncol = 4)

结果应该是:

鲍勃:2 卡罗尔:2 泰德:3 爱丽丝:1

我试图通过编写一个函数来解决这个问题,但它没有给出正确的结果(Carol = 1,而不是 2)

degree_centralty <- function(x) rowSums(x != 0)-1

我是不是做错了什么?

通过使用 rowSumscolSums,您将只计算一种连接。你想要的是两者的并集,可以找到如下:

degree_centralty <- function(x) rowSums(x + t(x) != 0) - 1
degree_centralty(A)
# [1] 2 2 3 1

现在 x + t(x) 是一个对称矩阵。