I have to use across()
multiple times. Is there a way to simplify the following across()
code?
ori_df <- data.frame(base_1 = 1:3,base_2 = 7:9,base_3 =3:1,
exp_1 =c(0.4,0.1,0.7),
exp_2 =c(0.1,0.05,0.6),
exp_3 =c(0.1,0.03,0.04),
exp_4 =c(0.1,0.03,0.04))
ori_df %>% mutate(across(contains("base"),~ .* exp_1,.names ="{sub('base','amount_exp_1',{.col})}")) %>%
mutate(across(contains("base"),~ .* exp_2,.names ="{sub('base','amount_exp_2',{.col})}")) %>%
mutate(across(contains("base"),~ .* exp_3,.names ="{sub('base','amount_exp_3',{.col})}")) %>%
mutate(across(contains("base"),~ .* exp_4,.names ="{sub('base','amount_exp_4',{.col})}"))