data.table
솔루션, 당신은 * (참조 열을 모두 변이 할 가정 더 유연한 버전을 보려면 아래를 참조하십시오).
* @ 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