機能dplyr::rename_with
とrlang::set_names
すでに言及しているいくつかの答えがあります。それらによって別々です。この回答は、2つの違いと、列の名前を変更するための関数と数式の使用を示しています。
rename_with
dplyr
パッケージから、関数または式のいずれかを使用して、.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
名前変更関数として使用してみましょう。pasteO
2つの引数を取ります。その結果、関数と式のどちらを使用するかに応じて、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")