Istnieje kilka odpowiedzi dotyczących funkcji dplyr::rename_with
irlang::set_names
już. Są oddzielne. ta odpowiedź ilustruje różnice między nimi oraz użycie funkcji i formuł do zmiany nazw kolumn.
rename_with
z dplyr
pakietu można użyć funkcji lub formuły do zmiany nazwy wybranych kolumn podanych jako .cols
argument. 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_names
z pakietu rlang. Aby zrobić inny przykład, użyjmy paste0
jako funkcji zmiany nazwy. pasteO
przyjmuje 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_with
działa tylko z ramkami danych. set_names
jest 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")