假设我有一个矩阵和一个索引向量。我想根据索引向量从每一行中选择一个值。例如,我想从基于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]
还有更好的方法吗?
答案 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