我有一个 0 对角线对称矩阵 X,例如
[1] [2] [3] [4] [5]
[1] 0.00000000 0.07065048 0.1019865 0.23641082 0.23641082
[2] 0.07065048 0.00000000 0.0000000 0.23641082 0.23641082
[3] 0.10198654 0.00000000 0.0000000 0.00000000 0.23641082
[4] 0.23641082 0.23641082 0.0000000 0.00000000 0.08870087
[5] 0.23641082 0.23641082 0.2364108 0.08870087 0.00000000
我需要根据第二个矩阵 Y 用 0 替换它的一些元素:
[1] [2]
[1] 3 2
[2] 4 3
[3] 1 2
所以 X[3,2], X[4,3], X[1,2] 并且,为了对称, X[2,3], X[3,4], X[2,1] 应该被替换与零。
我想出了这个解决方案:
for (i in 1:nrow(Y)) {
X[Y[i,1], Y[i,2]] <- 0
X[Y[i,2], Y[i,1]] <- 0
}
这是诀窍,但我想知道是否有更好、更有效的方法来使用类似应用的函数进行编码。
非常感谢您的关注。