【问题标题】:Change a part of a bigger matrix with a smaller one用较小的矩阵更改较大矩阵的一部分
【发布时间】:2014-10-08 16:01:33
【问题描述】:

我有两个矩阵,我想用较小的矩阵更改较大矩阵的一部分。

所以这是第一个矩阵,这是第二个矩阵:

更大的矩阵:

matrix1=matrix(1:36,nrow=6,ncol=6)

小矩阵:

matrix2=matrix(1:10,nrow=2,ncol=5)

通过合并它们,结果应该是这样的:

       [,1] [,2][,3] [,4]  [,5][,6]
[1,]    1    7   13   19   25   31
[2,]    2    8   14   20   26   32
[3,]    3    9   15   21   27   33
[4,]    1   3    5    7    9    34
[5,]    2   4    6    8    10   35
[6,]    6   12   18   24   30   36

结果矩阵的一部分在特定部分的较大部分中具有较小的部分。

【问题讨论】:

    标签: r


    【解决方案1】:

    这里的规则不明确。您似乎想用matrix2 替换从15 列的matrix1 的第4 行和第5 行。在这种情况下:

     matrixNew <- matrix1  #created a copy of `matrix1`
     matrixNew[4:5,-6] <- matrix2 #replace values in `matrixNew on rows 4 and 5 from columns 1 to 5 with matrix2 values
     matrixNew
     #       [,1] [,2] [,3] [,4] [,5] [,6]
     #[1,]    1    7   13   19   25   31
     #[2,]    2    8   14   20   26   32
     #[3,]    3    9   15   21   27   33
     #[4,]    1    3    5    7    9   34
     #[5,]    2    4    6    8   10   35
     #[6,]    6   12   18   24   30   36
    

    specific part 较小的位于较大的内部,位于第 4 行和第 5 行以及第 1 到 5 列。因此,我使用了 [subset 和 rowindex 4:5,即 4 和 5 , 和列索引-6。在 matrix1 中,有 6 列,因此,-6 删除第 6 列并在子集中保留 1:5 列。基于index 的值将替换为matrix2 值。

    【讨论】:

    • 没错!但是你能解释一下为什么这个解决方案有效吗?括号中的这些数字是什么意思?您是如何获得该解决方案的?
    • @Trik23 我更新了一些解释。另外,这里是 R-intro cran.r-project.org/doc/manuals/R-intro.html 的链接
    • 非常感谢,对我帮助很大!
    • @Trik23 没问题。索引在很多情况下都非常有用,您可以避免不必要的loops
    • @Trik23 这是一个链接stackoverflow.com/questions/1744861/…,它还提供有关书籍和其他链接的建议。也可以查看coursera.orgcoursera.org/course/rprog
    猜你喜欢
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多