R语言:如何使用向量作为矩阵行索引提取对应元素
按行对应索引提取矩阵元素的R实现
首先给出输入数据:
Vec <- c(1,3,2) Matrix <- rbind(c(4,2,3,0),c(2,9,1,0),c(2,2,9,9))
需求:针对上述矩阵的每一行,使用Vec中对应位置的数值作为列索引,提取该行的对应元素,最终得到结果c(4,1,2)。
高效向量化解法
在R中,最直接且高效的方式是构造二维索引矩阵来提取元素:
# 生成索引矩阵:每行对应(行号, 列索引) indices <- cbind(seq(nrow(Matrix)), Vec) Result <- Matrix[indices]
运行后查看结果:
Result # 输出:[1] 4 1 2
另一种apply循环解法(适合理解逻辑)
如果需要更直观的逐行处理逻辑,可以用apply函数:
Result <- apply(Matrix, 1, function(row, idx) row[idx], idx = Vec)
两种方法都能得到预期结果,其中二维索引的方式性能更优,尤其处理大型矩阵时差异明显。
内容的提问来源于stack exchange,提问作者locket
相关产品推荐
相关产品推荐

