Є кілька відповідей, що згадують про функції dplyr::rename_withта rlang::set_namesвже. Вони окремі. ця відповідь ілюструє різницю між ними та використання функцій та формул для перейменування стовпців.
rename_withз dplyrпакета може використовувати функцію або формулу для перейменування виділених стовпців, заданих як .colsаргумент. Наприклад, передача імені функції toupper:
library(dplyr)
rename_with(head(iris), toupper, starts_with("Petal"))
Еквівалентно передачі формули ~ toupper(.x):
rename_with(head(iris), ~ toupper(.x), starts_with("Petal"))
Під час перейменування всіх стовпців ви також можете використовувати set_namesпакет rlang. Щоб зробити інший приклад, давайте використаємо paste0як функцію перейменування. pasteOприймає 2 аргументи, в результаті існують різні способи передачі другого аргументу, залежно від того, використовуємо ми функцію чи формулу.
rlang::set_names(head(iris), paste0, "_hi")
rlang::set_names(head(iris), ~ paste0(.x, "_hi"))
Те саме можна досягти rename_with, передавши фрейм даних як перший аргумент .data, функцію як другий аргумент .fn, усі стовпці як третій аргумент .cols=everything()і параметри функції як четвертий аргумент .... В якості альтернативи ви можете розмістити другий, третій та четвертий аргументи у формулі, наведеній як другий аргумент.
rename_with(head(iris), paste0, everything(), "_hi")
rename_with(head(iris), ~ paste0(.x, "_hi"))
rename_withпрацює лише з фреймами даних. set_namesє більш загальним і може також виконувати перейменування векторів
rlang::set_names(1:4, c("a", "b", "c", "d"))
old = c("a", "d", "e")