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

R语言如何将输出矩阵的行索引替换为原矩阵对应行名称

问题场景

给定R语言中的矩阵m(行名为A-H),经计算得到存储行索引的结果矩阵ind,代码如下:

k=10; n = 8
m <- matrix(c(1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
              0, 0, 1, 1, 0, 0, 0, 0, 0, 0,
              0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
              0, 0, 0, 0, 0, 0, 0, 1, 1, 0,
              0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
              0, 0, 0, 0, 1, 0, 1, 0, 0, 0,
              0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
              0, 1, 1, 0, 0, 1, 0, 1, 0, 0), n, k, byrow = TRUE) 
colnames(m)<-1:k; rownames(m)<-LETTERS[1:n]
# 计算得到的索引矩阵
ind <-matrix(c(
    1,    1,
    2,    2,
    3,    6,
    4,    7,
    5,    8), 5, 2, byrow = TRUE)

需求是将ind中的数值行索引替换为m对应的行名,同时保留原矩阵5行2列的结构。
直接运行noquote(rownames(m)[ind])会得到扁平化的一维向量输出,不符合预期,预期输出格式如下:

[,1] [,2]
[1,]    A    A
[2,]    B    B
[3,]    C    F
[4,]    D    G
[5,]    E    H
解决方案

直接用ind作为索引取行名时,R默认会将结果降维为一维向量,只要将取到的字符向量按ind的原始行列数重构为矩阵即可,代码如下:

# 取对应行名后按ind的维度重建矩阵
res <- matrix(rownames(m)[ind], nrow = nrow(ind), ncol = ncol(ind))
# 输出无引号格式的结果
noquote(res)

运行后即可得到完全匹配预期的输出:

[,1] [,2]
[1,] A    A   
[2,] B    B   
[3,] C    F   
[4,] D    G   
[5,] E    H   

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 16:57:19