Как заменить имена столбцов, содержащие спецификаторы c строка r - PullRequest
2 голосов
/ 16 июня 2020

Я хотел бы заменить столбцы, содержащие строку «score», на предопределенные имена.

Вот простой пример набора данных и желаемые имена столбцов, которые нужно заменить.

df1 <- data.frame(a = c(1,2,3,4,5),
                  b = c(5,6,7,8,9),
                  c.1_score = c(10,10,2,3,4),
                  a.2_score= c(1,3,5,6,7))

replace.cols <- c("c_score", "a_score")

Число столбцов меняется каждое испытание. Поэтому всякий раз, когда имя столбца включает _score, я хотел бы заменить их моими предопределенными именами replace.cols.

Желаемые имена столбцов должны быть a b c_score and a_score.

Есть мысли? Спасибо.

1 Ответ

2 голосов
/ 16 июня 2020

Мы можем использовать rename_at

library(dplyr)
df1 <- df1 %>%
          rename_at(vars(ends_with('score')), ~ replace.cols)

df1
#  a b c_score a_score
#1 1 5      10       1
#2 2 6      10       3
#3 3 7       2       5
#4 4 8       3       6
#5 5 9       4       7

или с str_remove

library(stringr)
df1 %>%
     rename_at(vars(ends_with('score')), ~ str_remove(., '\\.\\d+'))

Или используя base R (при условии, что порядок имен столбцов сохраняется в replace.cols)

names(df1)[endsWith(names(df1), 'score')] <- replace.cols
...