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 @   小鲨鱼2018  阅读(563)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2021-05-29 c语言中指针运算符和下标运算符
2021-05-29 c语言中数组的名称原则上为数组的第一个元素的指针,p第一个元素指针时,同时p + i等价于 &a[i]。
2021-05-29 c语言 10-3
2021-05-29 c语言中两个值的排序,指针在函数间的传递。
2021-05-29 c语言10-2
2021-05-29 c语言 10-1
2021-05-29 c语言中实现两个值互换的函数
点击右上角即可分享
微信分享提示