Я пытаюсь создать «новые выражения», основанные на предложениях внутри функции из ее аргументов, но я не уверен, как именно сделать это новое выражение.
Вот пример, в котором я передаю числитель и знаменатель и в идеале хотел бы произвести мутацию для обоих, но также хотел бы сделать мутацию, в которой я делю их:
df <- tibble(
g1 = c(1, 1, 2, 2, 2),
g2 = c(1, 2, 1, 2, 1),
a = sample(5),
b = sample(5)
)
my_divide <- function(df, numerator, denominator) {
numerator <- enquo(numerator)
denominator <- enquo(denominator)
df %>%
mutate(p = !!numerator / !!denominator)
}
my_divide(df, g1 , g2)
Это не удается из-за следующей ошибки:
Error in !denominator : invalid argument type
Я мог бы легко передать выражение как его собственный аргумент и enquo () его, но это не масштабируется для большего количества выражений. Я мог бы также создать временные столбцы в фрейме данных из базовых запросов, а затем вычислить выражение напрямую, но это кажется слишком многословным. Я полагаю, что есть более простой способ сделать это