Es gibt einige Antworten, die die Funktionen erwähnen dplyr::rename_with
und rlang::set_names
bereits. Durch sie sind getrennt. Diese Antwort zeigt die Unterschiede zwischen den beiden und die Verwendung von Funktionen und Formeln zum Umbenennen von Spalten.
rename_with
aus dem dplyr
Paket kann entweder eine Funktion oder eine Formel verwenden, um eine Auswahl von Spalten umzubenennen, die als .cols
Argument 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_names
aus dem rlang-Paket verwenden. Um ein anderes Beispiel zu erstellen, verwenden wir paste0
als Umbenennungsfunktion. pasteO
nimmt 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_with
werden, 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_with
funktioniert nur mit Datenrahmen. set_names
ist allgemeiner und kann auch Vektorumbenennungen durchführen
rlang::set_names(1:4, c("a", "b", "c", "d"))
old = c("a", "d", "e")