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

R语言中如何使用位置数组提取矩阵对应位置的元素?

R语言按行提取对应指定列元素的方法

核心实现思路

R的矩阵支持传入两列的索引矩阵批量提取元素,第一列对应目标元素的行号,第二列对应目标元素的列号,正好满足按行取指定列元素的需求。

基础实现(无额外依赖)

# 构造行列配对的索引矩阵传入即可
result <- mymatrix[cbind(seq_len(nrow(mymatrix)), mycols)]

运行后result的输出即为你期望的c(2, 6, 8)。

原写法不符合预期的原因说明

你使用mymatrix[,mycols]得到3×3矩阵是R的默认索引规则导致的:逗号分隔的矩阵索引中,第二个参数传入向量时,默认会为所有行提取该向量指定的全部列,因此返回所有行的第2、3、2列,共3列数据。

可选扩展实现(tidyverse场景)

如果你的开发流程基于tidyverse体系,可以用行遍历的方式实现,方便和其他数据处理流程衔接:

library(dplyr)
result <- as.data.frame(mymatrix) %>%
  rowwise() %>%
  summarise(res = c_across(everything())[mycols[cur_group_id()]]) %>%
  pull(res)

内容的提问来源于stack exchange,提问作者mconsidine

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:18:03