代码之家  ›  专栏  ›  技术社区  ›  Will T-E

如何使用行和列索引向量从数据帧或矩阵中提取特定值?[副本]

  •  0
  • Will T-E  · 技术社区  · 7 年前

    mat <- matrix(1:12, nrow = 3, ncol = 4)
    print(mat)
         [,1] [,2] [,3] [,4]
    [1,]    1    4    7   10
    [2,]    2    5    8   11
    [3,]    3    6    9   12
    

    您希望使用以下行和列索引从矩阵中提取值:

    rowind <- c(2,3,1)
    colind <- c(4,4,1)
    

    如果我尝试将列和行向量传递到矩阵中:

    mat[rowind, colind]
    

    我得到了一个新的矩阵,其中包括rowind和colind的所有排列:

         [,1] [,2] [,3]
    [1,]   11   11    2
    [2,]   12   12    3
    [3,]   10   10    1
    

    如何取而代之的是仅与特定行和列组合相关的值?我曾考虑过使用for循环,但考虑到我的矩阵和索引向量都很大,我觉得这将是不必要的慢,很可能有更好的方法。

    1 回复  |  直到 7 年前
        1
  •  1
  •   akrun    7 年前

    我们可以 cbind 提取值的索引

    mat[cbind(rowind, colind)]
    #[1] 11 12  1