【问题标题】:Pick an element from each matrix columns从每个矩阵列中选择一个元素
【发布时间】:2014-05-25 14:51:49
【问题描述】:

我有一个矩阵m 和一个向量v。向量指定m 的每个列中我需要的元素。 v 的长度等于m 中的列数。我尝试了apply(m,2, FUN),但无法提出正确的功能来解决问题。我的数据和向量定义如下。

set.seed(12)
m <- matrix(sample(1:100,28),4)
v <- c(3,2,2,3,1,4,3)

我想要的结果是一个向量vv

vv <- c(93,4,1,23,39,82,85)

非常感谢您的帮助!

【问题讨论】:

    标签: r matrix indexing


    【解决方案1】:

    矩阵元素也可以通过 2 列矩阵进行索引。这样的矩阵决定了您要提取哪些元素(#row、#column)。 在您的情况下,这些是 (3,1), (2,2), (2,3), (3,4) 等,即 (v[1], 1), (v[2], 2) , 等等。因此,这是一个解决方案:

    set.seed(12)
    m <- matrix(sample(1:100,28),4)
    v <- c(3,2,2,3,1,4,3)
    
    m[cbind(v,seq_along(v))]
    ## [1] 93  4  1 23 39 82 85
    

    【讨论】:

    • 太好了,我想到了类似的东西,但不确定我能否以这种方式将索引传递给 m。中肯而简单的喜欢它。
    猜你喜欢
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多