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

pat*_*pat 2 r 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
Run Code Online (Sandbox Code Playgroud)

假设我只想使用第j列中的元素(如excel中的indirect)来从每一行中选择相应的列值.

例如,给定col(j)= 3

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

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

...

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

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

flo*_*del 5

您可以使用矩阵索引:

i <- seq_len(nrow(u))
j <- u[, 3]
u[cbind(i, j)]
Run Code Online (Sandbox Code Playgroud)