Es gibt einige Antworten, die die Funktionen erwähnen dplyr::rename_withund rlang::set_namesbereits. Durch sie sind getrennt. Diese Antwort zeigt die Unterschiede zwischen den beiden und die Verwendung von Funktionen und Formeln zum Umbenennen von Spalten.
rename_withaus dem dplyrPaket kann entweder eine Funktion oder eine Formel verwenden, um eine Auswahl von Spalten umzubenennen, die als .colsArgument angegeben sind. Zum Beispiel den Funktionsnamen übergeben toupper:
library(dplyr)
rename_with(head(iris), toupper, starts_with("Petal"))
Entspricht der Übergabe der Formel ~ toupper(.x):
rename_with(head(iris), ~ toupper(.x), starts_with("Petal"))
Wenn Sie alle Spalten umbenennen, können Sie sie auch set_namesaus dem rlang-Paket verwenden. Um ein anderes Beispiel zu erstellen, verwenden wir paste0als Umbenennungsfunktion. pasteOnimmt 2 Argumente an, daher gibt es verschiedene Möglichkeiten, das zweite Argument zu übergeben, je nachdem, ob wir eine Funktion oder eine Formel verwenden.
rlang::set_names(head(iris), paste0, "_hi")
rlang::set_names(head(iris), ~ paste0(.x, "_hi"))
Dasselbe kann erreicht rename_withwerden, indem der Datenrahmen als erstes Argument .data, die Funktion als zweites Argument .fn, alle Spalten als drittes Argument .cols=everything()und die Funktionsparameter als viertes Argument übergeben werden .... Alternativ können Sie das zweite, dritte und vierte Argument in eine Formel einfügen, die als zweites Argument angegeben wird.
rename_with(head(iris), paste0, everything(), "_hi")
rename_with(head(iris), ~ paste0(.x, "_hi"))
rename_withfunktioniert nur mit Datenrahmen. set_namesist allgemeiner und kann auch Vektorumbenennungen durchführen
rlang::set_names(1:4, c("a", "b", "c", "d"))
old = c("a", "d", "e")