我有一个矩阵
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
循环来执行此操作,但这感觉效率很低。
答案 0 :(得分:2)
我们可以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