R 如何对列名进行分组并为其添加后缀?

R 如何对列名进行分组并为其添加后缀?,r,R,如果有人能帮我完成以下任务,我将不胜感激 我有一个包含以下列的R dataframe: id cols_len.max.(1,5] cols_len.max.(1,55] cols_width.min.(1,55] cols_width.min.(2,15] cols_width.uppen.(1,15] 我想重命名这些列以获得以下列名: id cols_len.max_1 cols_len.max_2 cols_width.min_1 cols_width.min_2 cols_width.

如果有人能帮我完成以下任务,我将不胜感激

我有一个包含以下列的R dataframe:

id
cols_len.max.(1,5]
cols_len.max.(1,55]
cols_width.min.(1,55]
cols_width.min.(2,15]
cols_width.uppen.(1,15]
我想重命名这些列以获得以下列名:

id
cols_len.max_1
cols_len.max_2
cols_width.min_1
cols_width.min_2
cols_width.upper
这是我当前的代码:

colnames(df) <- gsub("\\(.*\\]*-*.","",colnames(df))
colnames(df) <- gsub("\\.","",colnames(df))
colnames(df) <- gsub("-","",colnames(df))
colnames(df) <- gsub("\\_","",colnames(df))

我怎样才能用
\u N
追加,其中
N
应该如上所示分配?我正在搜索一种自动方法,因为我的真实数据框包含数百列。

一个选项是删除末尾的子字符串,并使用
make.unique写入

v2 <- make.unique(sub("\\.\\(.*", "", v1))
并将其粘贴到“tmp”的末尾

i1 <- nzchar(t1)
tmp[i1] <-  paste(tmp[i1], t1[i1], sep="_")
tmp
#[1] "id"               "cols_len.max_1"   "cols_len.max_2"   "cols_width.min_1" "cols_width.min_2" "cols_width.upper"
i1
tmp <- sub("\\.\\(.*", "", v1)
t1 <- ave(seq_along(tmp), tmp, FUN = function(x) 
    if(length(x) == 1) "" else seq_along(x))
i1 <- nzchar(t1)
tmp[i1] <-  paste(tmp[i1], t1[i1], sep="_")
tmp
#[1] "id"               "cols_len.max_1"   "cols_len.max_2"   "cols_width.min_1" "cols_width.min_2" "cols_width.upper"
v1 <- c("id", "cols_len.max.(1,5]", "cols_len.max.(1,55]", "cols_width.min.(1,55]", 
"cols_width.min.(2,15]", "cols_width.upper.(1,15]")