【问题标题】:R: How can I select a value from each row based on an index vector? [duplicate]R:如何根据索引向量从每一行中选择一个值? [复制]
【发布时间】:2019-05-12 13:52:04
【问题描述】:

假设我有一个矩阵和一个索引向量。我想根据索引向量从每一行中选择一个值。比如我想根据ind从下面的矩阵中得到1 7 13 4 10

XX <- matrix(1:15,nrow=5)
ind <- c(1,2,3,1,2)
> XX
     [,1] [,2] [,3]
[1,]    1    6   11
[2,]    2    7   12
[3,]    3    8   13
[4,]    4    9   14
[5,]    5   10   15

现在我现在的方式不整洁,我做了如下的事情,

t(XX)[(0:(dim(XX)[1]-1))*dim(XX)[2]+ind]

有没有更好的办法?

【问题讨论】:

    标签: r


    【解决方案1】:

    一种选择是通过cbind将行索引(行序列)与列索引('ind')一起使用行/列索引并提取'XX'的值

    XX[cbind(seq_len(nrow(XX)), ind)]
    #[1]  1  7 13  4 10
    

    【讨论】:

      【解决方案2】:

      使用apply家人:

          unlist(lapply(1:length(ind), function(x) XX[x, ind[x]]))
      #[1]  1  7 13  4 10
      

      【讨论】:

        猜你喜欢
        • 2019-12-18
        • 2020-08-19
        • 2021-07-28
        • 1970-01-01
        • 2021-04-25
        • 1970-01-01
        • 2015-07-03
        • 2016-06-21
        • 1970-01-01
        相关资源
        最近更新 更多