使用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)
答案 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]])