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

使用参考数据框重命名数据框行名时遇重复行名错误

用参考数据框重命名数据框行名时遇到重复值错误

我想用条目更多的参考数据框pathways_ref给abundance数据框重命名行名,尝试了以下代码,但触发了重复行名不允许的错误。

尝试的代码

x <- row.names(abundance) 
copy <- pathways_ref$Name[match(x, pathways_ref$ID)]
row.names(abundance) <- c(copy)
row.names(abundance) <- pathways_ref$Name[match(x, pathways_ref$ID)]

报错信息

Error in .rowNamesDF<-(x, value = value) :
duplicate 'row.names' are not allowed
In addition: Warning message:
non-unique values when setting 'row.names':

数据框示例

原始数据框abundance

head(abundance)
        S230047s S230054s S230073s S230077s
ko05340    13.50     33.6     1.50    15.70
ko00564   166.50    387.6    22.50   196.70
ko00680   256.00    566.5    27.00   278.00
ko00562    28.25     59.9     2.25    38.55
ko03030   169.25    393.6    14.25   204.95
ko00561    93.50    193.9    10.50   107.30

参考数据框pathways_ref

head(pathways_ref)
       ID                                         Name
1 ko01100                           Metabolic pathways
2 ko01110        Biosynthesis of secondary metabolites
3 ko01120 Microbial metabolism in diverse environments
4 ko01200                            Carbon metabolism
5 ko01210              2-Oxocarboxylic acid metabolism
6 ko01212                        Fatty acid metabolism

解决方法

错误核心是pathways_ref$Name存在重复值,而行名要求必须唯一,可通过以下方式处理:

  • 保留ID+名称组合行名:兼顾唯一性和可读性
pathway_names <- pathways_ref$Name[match(row.names(abundance), pathways_ref$ID)]
row.names(abundance) <- paste(row.names(abundance), pathway_names, sep = " - ")
  • 给重复名称加后缀区分:仅用名称,自动为重复项添加序号
name_vec <- pathways_ref$Name[match(row.names(abundance), pathways_ref$ID)]
name_vec <- make.unique(name_vec, sep = "_")
row.names(abundance) <- name_vec
  • 先排查参考数据框重复项:定位重复名称后再决定是否修正源数据
# 查看重复的名称值
duplicated_names <- pathways_ref$Name[duplicated(pathways_ref$Name)]
unique(duplicated_names)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 01:24:50