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