機能dplyr::rename_withとrlang::set_namesすでに言及しているいくつかの答えがあります。それらによって別々です。この回答は、2つの違いと、列の名前を変更するための関数と数式の使用を示しています。
rename_withdplyrパッケージから、関数または式のいずれかを使用して、.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名前変更関数として使用してみましょう。pasteO2つの引数を取ります。その結果、関数と式のどちらを使用するかに応じて、2番目の引数を渡す方法が異なります。
rlang::set_names(head(iris), paste0, "_hi")
rlang::set_names(head(iris), ~ paste0(.x, "_hi"))
同じことrename_withは、データフレームを最初の引数.dataとして、関数を2番目の引数として.fn、すべての列を3番目の引数として.cols=everything()、関数パラメーターを4番目の引数として渡すことで実現できます...。または、2番目、3番目、4番目の引数を、2番目の引数として指定された数式に配置することもできます。
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")