如何提取与列列表对应的矩阵元素

时间:2013-03-01 02:16:51

标签: r apply

使用apply函数似乎应该很简单,但我发现自己正在努力解决它。

我有一个矩阵(数据框也可以)数据:

u <- matrix(sample(seq(4),20,T),5,4)
u
     [,1] [,2] [,3] [,4]
[1,]    1    2    4    2
[2,]    4    3    2    2
[3,]    3    3    3    1
[4,]    3    2    4    4
[5,]    4    1    3    4

假设我只是想使用元素(如excel中的间接) 列j从每行中选择相应的列值。

e.g。给定col(j)= 3

  

第1行将得到对应于row = 1,col(j = 3)= 4且返回2(row(1):col(4))的元素

     

第2行将获得元素   对应于行= 2,col(j = 3)= 2并返回3(行(2):col(2))

     

...

     

行   5将获得对应于行= 5,col(j = 3)= 3并且返回3的元素   (行(5),山口(3))

     

我最终得到了这些值的向量v&lt; -c(4,2,... 3)

2 个答案:

答案 0 :(得分:5)

您可以使用矩阵索引:

i <- seq_len(nrow(u))
j <- u[, 3]
u[cbind(i, j)]

答案 1 :(得分:1)

我认为以下内容也有效:

sapply(1:nrow(u), function(i) u[i,u[i,3]])