4
これは、ベースRまたはsetnames
in data.table
またはrename_
の中でdplyr
0.5で簡単に行うことができますが、 rename_
は推奨されていませんので、dplyr
0.6.0でこれを行う簡単な方法が見つかりませんでした。カラム名の文字ベクトルと置換えのある複数のカラムの名前を変更
以下は例です。私はcol.to
に対応する値とcol.from
に列名を置き換えたい:
col.from <- c("wt", "hp", "vs")
col.to <- c("foo", "bar", "baz")
df <- mtcars
head(df, 2)
#> mpg cyl disp hp drat wt qsec vs am gear carb
#> Mazda RX4 21 6 160 110 3.9 2.620 16.46 0 1 4 4
#> Mazda RX4 Wag 21 6 160 110 3.9 2.875 17.02 0 1 4 4
予想される出力:
names(df)[match(col.from, names(df))] <- col.to
head(df, 2)
#> mpg cyl disp bar drat foo qsec baz am gear carb
#> Mazda RX4 21 6 160 110 3.9 2.620 16.46 0 1 4 4
#> Mazda RX4 Wag 21 6 160 110 3.9 2.875 17.02 0 1 4 4
どのように私はdplyr
0.6.0でrename
かrename_at
でこれを行うことができますか?
またはわずか 'DF%>%短縮rename_at(vars(col.from)、〜col.to) ' –
うわー、どちらも構文が非常に単純です。唯一のことは、このような場合に 'rename_at'の動作を理解することが難しいことです。私は '.fars 'が' .vars'の各列名に適用されると考えました。私はそれが位置によって一致するとは思わなかった。 – mt1022
@ mt1022うん、@docendodiscimusのものは、 '?select_all'文書で良い例になるでしょう。この関数は、選択したすべての列名に適用されます。つまり、 'function(x)'は基本的に 'x'の 'col.from'値を受け取り、それを使って処理することができます。これは私たちの場合、長さ3の異なる文字ベクトルを返すだけです。 – lukeA