【问题标题】:How to change elements in one matrix indexed in another matrix?如何更改在另一个矩阵中索引的一个矩阵中的元素?
【发布时间】:2014-03-04 03:55:38
【问题描述】:

我有两个矩阵 A 和 B。矩阵 B 是一个两列矩阵,每一行包含矩阵 A 中元素的一个索引。我想更改矩阵 A 中的那些元素,这些元素由矩阵中的每一行索引B,到 0。

有没有办法避免使用如下所示的循环?

> A <- matrix(1:12, 3, 4)
> B <- matrix(c(1, 2, 2, 2, 3, 4), byrow = TRUE, ncol = 2)
> A
     [,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12
> B
     [,1] [,2]
[1,]    1    2
[2,]    2    2
[3,]    3    4
> for (i in 1:nrow(B)) {
+     A[B[i, 1], B[i, 2]] <- 0
+ }
> A
     [,1] [,2] [,3] [,4]
[1,]    1    0    7   10
[2,]    2    0    8   11
[3,]    3    6    9    0

【问题讨论】:

    标签: r loops matrix


    【解决方案1】:

    就是这样

    A[B] <- 0;
    

    【讨论】:

    • 这确实是一种很好的子集化方式。您可以在?[ / Details / Matrices and arrays 阅读更多内容。
    • 从来没想过。非常感谢!
    猜你喜欢
    • 2017-02-10
    • 2015-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多