data.table
ソリューション、あなたは*(参照列の全てを変異させたいと仮定より柔軟なバージョンについては以下を参照してください)。
* as @ sb0709コメントには、mutate_all
も同様です。与え
library(data.table)
df <- data.table(old_col_1 = 20:24,
old_col_2 = 55:49,
old_col_3 = rnorm(5, 100, 30))
df[ , sub("old", "new", names(df)) := lapply(.SD, function(x) 15-x) ]
:
R> df
old_col_1 old_col_2 old_col_3 new_col_1 new_col_2 new_col_3
1: 20 55 86.29104 -5 -40 -71.29104
2: 21 56 144.21564 -6 -41 -129.21564
3: 22 57 104.84574 -7 -42 -89.84574
4: 23 58 93.18084 -8 -43 -78.18084
5: 24 59 104.96188 -9 -44 -89.96188
あなたはすべての列よりも少ないを選択したい場合は、あなただけのnames
ベクトルと.SD
リストをサブセットにする必要があります。
df[ , sub("old", "new", names(df)[2:3]) := lapply(.SD[,2:3], function(x) 15-x) ]
代わりになります::
R> df
old_col_1 old_col_2 old_col_3 new_col_2 new_col_3
1: 20 55 138.28667 -40 -123.28667
2: 21 56 69.03836 -41 -54.03836
3: 22 57 147.39790 -42 -132.39790
4: 23 58 88.15505 -43 -73.15505
5: 24 59 28.96437 -44 -13.96437
あなたはそのためmutate_allを()を使用することができますたとえば、列のみ2と3であなたの突然変異を実行します。 – sb0709