【问题标题】:R: Map a matrix with another matrix in rR:用r中的另一个矩阵映射一个矩阵
【发布时间】:2018-04-24 01:55:19
【问题描述】:

我在map a matrix with another matrix 中发现了同样的问题。但是,那是在 Matlab 中。如果我想将一个矩阵与 R 中的另一个矩阵映射,如何在不使用循环的情况下轻松获得。例如,我有以下矩阵,

A = [ 1 4 3
      2 3 4 
      4 3 1 
      4 5 5 
      1 2 1]

 B = [3 3 2
      2 0 1
      1 1 5
      4 1 3
      5 2 0]

我的映射应该如下所示;

  R = [1 4 3
      2 3 4
      4 3 5
      4 1 3
      5 2 0]

结果 R 将取 A 中从 [1,1] 到 [3,2] 的值。然后剩余的值是从 B 开始,从 [3,3] 到 [5,3]。

【问题讨论】:

    标签: r matrix


    【解决方案1】:

    就这么简单:

    R <- t(A)
    R[9:15] <- t(B)[9:15]
    t(R)
    
         [,1] [,2] [,3]
    [1,]    1    4    3
    [2,]    2    3    4
    [3,]    4    3    5
    [4,]    4    1    3
    [5,]    5    2    0
    

    样本数据

    A <- matrix(c(1,4,3,2,3,4,4,3,1,4,5,5,1,2,1), nrow = 5, ncol = 3, byrow = TRUE)
    B <- matrix(c(3,3,2,2,0,1,1,1,5,4,1,3,5,2,0), nrow = 5, ncol = 3, byrow = TRUE)
    

    【讨论】:

    • 它工作正常。我想知道这里的转置有多重要。我没有做转置就尝试了你的方法。那是错的。很好的解决方案@D杰克。
    【解决方案2】:

    与 Djack 的方法有点不同,我使用了 matrixbyrow = T,并对原始矩阵进行了索引:

    matrix(c(t(A)[1:8], t(B)[9:15]), byrow = T, ncol = 3)
    

    【讨论】:

    • 有趣的方法,但应该是matrix(c(t(A)[1:8], t(B)[9:15]), byrow = T, ncol = 3)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 1970-01-01
    • 2019-02-03
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多