【发布时间】:2020-11-10 22:47:57
【问题描述】:
我有两个矩阵S 和A,我想根据S 的值修改A 的值。矩阵S 包含我想修改的矩阵A 的索引。比如
S <- matrix(c(2,3,3,1,1,2),nrow=3, byrow=TRUE)
[,1] [,2]
[1,] 2 3
[2,] 3 1
[3,] 1 2
生成的矩阵A 将是
[,1] [,2] [,3]
[1,] 0 1 1
[2,] 1 0 1
[3,] 1 1 0
换句话说,在矩阵S中,每一行代表一个图顶点。每行中的值(比如ith)是连接到ith 顶点的顶点索引。矩阵A是图的邻接矩阵。
问题:如何解决问题,即获取矩阵A,而不使用for循环或apply/sapply/mapply等函数?最快的方法是什么?
编辑:一个例子
S <- matrix(c(2,3,3,1,1,2,1,2),nrow=4, byrow=TRUE)
[,1] [,2]
[1,] 2 3
[2,] 3 1
[3,] 1 2
[4,] 1 2
结果应该是:
[,1] [,2] [,3] [,4]
[1,] 0 1 1 1
[2,] 1 0 1 1
[3,] 1 1 0 0
[4,] 1 1 0 0
【问题讨论】:
-
在您的新示例中,第 4 列的索引在哪里?数字只到 3
-
对于第一行,我假设,2, 3 意味着“A”会从 0 变为 1,但是为什么在没有索引时它会填充第 4 列
-
@akrun 有填充是因为第4行第一列有1,表示第4和第1个顶点相连
-
好的,那么更新可能会有所帮助
-
两次
1, 2的目的是什么?
标签: r matrix adjacency-matrix