如何使用名称列表修改R语言对角矩阵的行标签与列标签
实现方法
你可以通过构建名称映射查找表的方式完成替换,代码如下:
# 1. 从namelist生成键值映射向量,方便快速匹配 lookup <- setNames(namelist[, "newname"], namelist[, "name"]) # 2. 复制原矩阵后替换行列名(不修改原始矩阵的话可以加这一步,不需要可以直接改Mat) newMat <- Mat rownames(newMat) <- lookup[rownames(newMat)] colnames(newMat) <- lookup[colnames(newMat)]
如果偏好使用match函数实现匹配,也可以用下面的版本:
newMat <- Mat rownames(newMat) <- namelist[match(rownames(newMat), namelist[,"name"]), "newname"] colnames(newMat) <- namelist[match(colnames(newMat), namelist[,"name"]), "newname"]
两种方法最终得到的newMat都和你给出的预期效果完全一致。
内容的提问来源于stack exchange,提问作者marie
相关产品推荐
相关产品推荐

