Используя dplyr
, мы можем использовать mutate_at
, чтобы выбрать столбцы, заканчивающиеся на "t"
, и умножить каждый из них на n
.
library(dplyr)
df %>%
mutate_at(vars(ends_with("t")), list(s = ~. * n))
# n sd2_t sd1_t sd2neg_t sd1neg_t sd2_t_s sd1_t_s sd2neg_t_s sd1neg_t_s
#1 1 20 22 10 11 20 22 10 11
#2 2 25 26 20 22 50 52 40 44
#3 3 30 33 15 12 90 99 45 36
Не то, чтобы это было необходимо, поскольку у вас уже есть векторизованное решение от @thelatemail, но поскольку вы пытались использовать lapply
, один из способов сделать это был бы
df[sub("_t$", "_s", names(df[-1]))] <- lapply(df[-1], `*`, df$n)