通过索引向量更改多个矩阵元素

3
我有一个矩阵。
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循环来完成,但这感觉效率不高。

1个回答

4
我们可以使用 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

1
你很棒。 - Georgery

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接