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

在R语言中根据行名和列名提取矩阵对应单元格值

从矩阵中按行名列名匹配提取值到数据框

下面提供几种高效的实现方法,先模拟测试数据方便你验证:

模拟测试数据

# 生成带行名、列名的100行10列矩阵M1
set.seed(123)
M1 <- matrix(rnorm(1000), nrow = 100, ncol = 10,
             dimnames = list(paste0("row", 1:100), paste0("col", 1:10)))

# 生成包含行名、列名的数据框DF
DF <- data.frame(
  C1 = sample(paste0("row", 1:100), 10, replace = FALSE),
  C2 = sample(paste0("col", 1:10), 10, replace = TRUE)
)

方法一:基础R高效实现

直接利用矩阵的索引特性,将数据框的行名、列名列转换为索引矩阵来提取值:

DF$C3 <- M1[as.matrix(DF[, c("C1", "C2")])]

这种方法不需要逐行循环,效率远高于逐行处理,适合大矩阵场景。

方法二:基础R逐行处理(适用于理解逻辑)

如果需要明确看到逐行匹配的过程,可以用apply函数:

DF$C3 <- apply(DF, 1, function(x) M1[x["C1"], x["C2"]])

方法三:tidyverse/dplyr实现

如果你习惯使用tidyverse生态,可以用rowwise实现逐行匹配:

library(dplyr)

DF <- DF %>%
  rowwise() %>%
  mutate(C3 = M1[C1, C2]) %>%
  ungroup()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 15:40:02