R语言中实现相同行名自动重命名

 

001、

dat <- c("a", "b", "a", "a", "c", "k", "k", "c")     ## 测试行名

df <- data.frame(a = 1:8, b = letters[1:8])
df
rownames(df) <- dat                    ## 报错
uni <- unique(dat)
for (i in 1:length(uni)) {
  count = -1
  for (j in 1:length(dat)) {
    if (dat[j] == uni[i]) {
      count = count + 1
      if (count > 0) {
        dat[j] = paste0(uni[i], ".", count)
      }      
    }
  }
}
dat                                     ## 重命名结果
rownames(df) <- dat
df

 

002、改进

dat <- c("a", "b", "a", "a", "c", "k", "k", "c")     ## 测试行名

df <- data.frame(a = 1:8, b = letters[1:8])
df
rownames(df) <- dat   

dat
uni <- unique(dat[duplicated(dat)])     ## 筛选出重复项
uni

for (i in 1:length(uni)) {              ## 仅对重复项进行循环,缩短程序运行时间
  count = -1
  for (j in 1:length(dat)) {
    if (dat[j] == uni[i]) {
      count = count + 1
      if (count >= 1) {
        dat[j] = paste0(dat[j], ".", count)
      }
    }
  }
  
}
dat

 

posted @ 2022-05-29 23:34  小鲨鱼2018  阅读(537)  评论(0编辑  收藏  举报