Istnieje kilka odpowiedzi dotyczących funkcji dplyr::rename_withirlang::set_names już. Są oddzielne. ta odpowiedź ilustruje różnice między nimi oraz użycie funkcji i formuł do zmiany nazw kolumn.
rename_withz dplyrpakietu można użyć funkcji lub formuły do zmiany nazwy wybranych kolumn podanych jako .colsargument. Na przykład przekazanie nazwy funkcji toupper:
library(dplyr)
rename_with(head(iris), toupper, starts_with("Petal"))
Jest równoznaczne z przekazaniem wzoru ~ toupper(.x):
rename_with(head(iris), ~ toupper(.x), starts_with("Petal"))
Zmieniając nazwy wszystkich kolumn, możesz także użyć set_namesz pakietu rlang. Aby zrobić inny przykład, użyjmy paste0jako funkcji zmiany nazwy. pasteOprzyjmuje 2 argumenty, w rezultacie istnieją różne sposoby przekazania drugiego argumentu w zależności od tego, czy używamy funkcji, czy formuły.
rlang::set_names(head(iris), paste0, "_hi")
rlang::set_names(head(iris), ~ paste0(.x, "_hi"))
To samo można osiągnąć rename_with, przekazując ramkę danych jako pierwszy argument .data, funkcję jako drugi argument .fn, wszystkie kolumny jako trzeci argument .cols=everything()i parametry funkcji jako czwarty argument .... Alternatywnie możesz umieścić drugi, trzeci i czwarty argument we wzorze podanym jako drugi argument.
rename_with(head(iris), paste0, everything(), "_hi")
rename_with(head(iris), ~ paste0(.x, "_hi"))
rename_withdziała tylko z ramkami danych. set_namesjest bardziej ogólny i może również zmieniać nazwy wektorów
rlang::set_names(1:4, c("a", "b", "c", "d"))
old = c("a", "d", "e")