我有索引向量,我想根据它进行过滤。在每一列中,将选择不同的行。输出将是一个过滤值向量,其长度为列数。芽不使用慢循环。例如
set.seed(123)
(M <- matrix(rnorm(25), 5))
[,1] [,2] [,3] [,4] [,5]
[1,] -0.56047565 1.7150650 1.2240818 1.7869131 -1.0678237
[2,] -0.23017749 0.4609162 0.3598138 0.4978505 -0.2179749
[3,] 1.55870831 -1.2650612 0.4007715 -1.9666172 -1.0260044
[4,] 0.07050839 -0.6868529 0.1106827 0.7013559 -0.7288912
[5,] 0.12928774 -0.4456620 -0.5558411 -0.4727914 -0.6250393
indices <- c(2, 3, 1, 4, 4)
vect <- c()
for(i in 1:5) {
vect <- c(vect, M[indices[i], i])
}
vect
[1] -0.2301775 -1.2650612 1.2240818 0.7013559 -0.7288912
Run Code Online (Sandbox Code Playgroud)
我有更大的数据集,因此 for 循环并不理想。但我想不出更好的办法,也找不到更好的办法。
r ×1