dat <- c("a", "b", "a", "a", "c", "k", "k", "c") ## 测试行名
df <- data.frame(a = 1:8, b = letters[1:8])
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
002、改进
dat <- c("a", "b", "a", "a", "c", "k", "k", "c") ## 测试行名
df <- data.frame(a = 1:8, b = letters[1:8])
rownames(df) <- dat
uni <- unique(dat[duplicated(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 >= 1) {
dat[j] = paste0(dat[j], ".", count)