【发布时间】:2013-07-29 07:36:47
【问题描述】:
我有一个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
}
这可以解决问题,但我想知道是否有更好、更有效的方法来使用类似应用的函数进行编码。
非常感谢您的关注。
【问题讨论】: