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

R语言中如何根据另一数据框的值修改矩阵行名与列名?

R语言按映射表替换矩阵行名、列名的实现方案

核心逻辑是构造「原名称-目标名称」的命名映射向量,通过名称匹配批量替换行、列的dimnames属性,全程使用base R内置函数,无需安装第三方扩展包。

操作步骤

  • 第一步:准备测试数据(已有现成mx矩阵和df映射表可跳过)
# 构造示例矩阵mx
mx <- matrix(
  data = c(1,0,0, 0,1,0, 1,0,1),
  nrow = 3,
  dimnames = list(
    c("ABC", "DEF", "GHI"),
    c("ABC", "DEF", "GHI")
  )
)

# 构造示例映射数据框df
df <- data.frame(
  letters = c("ABC", "DEF", "GHI"),
  country = c("UK", "USA", "Egypt")
)
  • 第二步:构建名称映射并完成替换
# 生成命名映射向量:向量名为原缩写标识,向量值为对应的国家名
name_map <- df$country
names(name_map) <- df$letters

# 批量匹配替换行名、列名
rownames(mx) <- name_map[rownames(mx)]
colnames(mx) <- name_map[colnames(mx)]
  • 第三步:结果验证
    替换完成后直接打印mx,即可得到目标输出:
UK USA Egypt
UK    1   0     1
USA   0   1     0
Egypt 0   0     1

注意事项

  • 替换前建议先排查无匹配的名称,避免替换后出现NA值的行/列名,排查代码如下:
# 筛选行名中无法在映射表找到对应值的项
setdiff(rownames(mx), df$letters)
# 筛选列名中无法在映射表找到对应值的项
setdiff(colnames(mx), df$letters)

如果以上两行代码返回结果均为空字符向量,说明所有名称都有对应映射,替换结果不会出现异常。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 22:18:32