我有一个矩阵
myMatrix <- matrix(data = 0, nrow = 4, ncol = 4)
[,1] [,2] [,3] [,4]
[1,] 0 0 0 0
[2,] 0 0 0 0
[3,] 0 0 0 0
[4,] 0 0 0 0
我想更改特定的值
myMatrix[1,1] <- 1
myMatrix[2,3] <- 1
myMatrix[4,4] <- 1
myMatrix
[,1] [,2] [,3] [,4]
[1,] 1 0 0 0
[2,] 0 0 1 0
[3,] 0 0 0 0
[4,] 0 0 0 1
如果我有两个包含行和列索引的向量,如何高效/优雅地做到这一点:
rowIndexes <- c(1,2,4)
colIndexes <- c(1,3,4)
分配的值是恒定的(在这种情况下为1
)。
我知道如何使用for
-loop来做到这一点,但这感觉效率很低。
我们可以cbind
将行/列索引,的子集myMatrix
和值分配给1
myMatrix[cbind(rowIndexes, colIndexes)] <- 1
myMatrix
# [,1] [,2] [,3] [,4]
#[1,] 1 0 0 0
#[2,] 0 0 1 0
#[3,] 0 0 0 0
#[4,] 0 0 0 1
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句