我有一个配方成分RxI矩阵,如下所示:
I
R a b c d e
1 1 0 1 0 0
2 1 1 1 0 1
3 0 1 1 1 0
4 0 0 0 1 1
现在,我想计算RxR邻接矩阵。我对如何计算邻接矩阵的元素几乎没有选择。 选项: 一个。如果它共享任何成分,矩阵中的元素是一个 湾矩阵中的元素是共享成分的数量。
例如,
如果是:
R
R 1 2 3 4
1 1 1 1 0
2 1 1 1 1
3 1 1 1 1
4 0 1 1 1
如果是b:
R
R 1 2 3 4
1 2 2 1 0
2 2 4 2 1
3 1 2 3 1
4 0 1 1 2
答案 0 :(得分:1)
您可以使用tcrossprod()
或mat %*% t(mat)
:
tcrossprod(mat)
# [,1] [,2] [,3] [,4]
#[1,] 2 2 1 0
#[2,] 2 4 2 1
#[3,] 1 2 3 1
#[4,] 0 1 1 2
对于案例a
,这是案例b
的一个特例,您可以用1替换非零元素:
tm <- tcrossprod(mat)
tm[tm != 0] = 1
tm
# [,1] [,2] [,3] [,4]
#[1,] 1 1 1 0
#[2,] 1 1 1 1
#[3,] 1 1 1 1
#[4,] 0 1 1 1
数据:
dput(mat)
structure(c(1L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L,
0L, 1L, 1L, 0L, 1L, 0L, 1L), .Dim = 4:5, .Dimnames = list(NULL,
c("a", "b", "c", "d", "e")))