You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 06:40:45