R子集元素指定每个元素的列和行

时间:2016-03-29 13:51:00

标签: r subset

如何指定矩阵,同时指定每个项目的行和列?我目前正在使用sapply,但我发现它并不是特别优雅:

> mat <- data.frame(a=c(1,2,3),b=c(7,6,5))
> mat
  a b
1 1 7
2 2 6
3 3 5
> rowSel <- 1:3
> colSel <- c(1,2,1)
> sapply(rowSel,function(i){mat[i,colSel[i]]})
[1] 1 6 3

1 个答案:

答案 0 :(得分:4)

更短的方式:

mat[cbind(rowSel, colSel)]
#[1] 1 6 3

这使用两个矩阵矩阵的索引。第一列包含行的索引,第二列包含列的索引。 twocolumn矩阵的每一行索引矩阵mat的一个元素。