Рассмотрим следующее:
library(tidyverse)
df <- tibble(x = rnorm(100), y = rnorm(100, 10, 2), z = x * y)
df %>%
mutate_all(funs(avg = mean(.), dev = sd(.), scaled = (. - mean(.)) / sd(.)))
Есть ли способ избежать двухкратного вызова mean
и sd
, ссылаясь на столбцы avg
и dev
. Я имею в виду что-то вроде
df %>%
mutate_all(funs(avg = mean(.), dev = sd(.), scaled = (. - avg) / dev))
Очевидно, что это не сработает, потому что нет столбцов avg
и dev
, но x_avg
, x_dev
, y_avg
, y_dev
и т. Д.
Есть ли хороший способ в funs
использовать инструменты rlang
для программного создания этих ссылок на столбцы, чтобы я мог ссылаться на столбцы, созданные предыдущими именованными аргументами, на funs
(когда .
- это x
, я бы сослался на x_mean
и x_dev
для вычисления x_scaled
и т. Д.)?