R:如何基于索引向量从每一行中选择一个值?

时间:2019-05-12 13:52:05

标签: r

假设我有一个矩阵和一个索引向量。我想根据索引向量从每一行中选择一个值。例如,我想从基于1 7 13 4 10

的以下矩阵中获取ind
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]

还有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

使用apply家庭:

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