Использование предложений dplyr с mutate()
Читая руководство по программированию с dplyr, я получаю неожиданную ошибку.
На самом деле, пытаясь примеры с summarize
работает совершенно правильно, но если я попробую похожие вещи с mutate
код не будет работать.
Вот мой код:
df = data.frame(A=c(464,3465,48,3415,357,21,657), B=c(12,15,985,35,67,13,467))
df %>%
mutate(x = A-B) %>%
pull(x)
#returns the good output :
#[1] 452 3450 -937 3380 290 8 190
get.diff = function(var1, var2, data=df){
var1 = enquo(var1)
var2 = enquo(var2)
data %>%
mutate(x = (!!var1 - !!var2)) %>%
pull(x)
}
get.diff(A, B)
returns an error
Вот ошибка:
Ошибка в! Var2: неверный тип аргумента
Я много чего перепробовал, но это самое близкое, что я получил к справочным образцам.
Что я упустил?
1 ответ
Решение
Вам просто нужно скобки вокруг каждого "взрыва взрыва" / без кавычек (!!varX
):
mutate(x = ((!!var1) - (!!var2))) %>%
Полный код:
df = data.frame(A=c(464,3465,48,3415,357,21,657), B=c(12,15,985,35,67,13,467))
df %>%
dplyr::mutate(x = A-B) %>%
pull(x)
#returns the good output :
#[1] 452 3450 -937 3380 290 8 190
get.diff = function(var1, var2, data=df){
var1 = enquo(var1)
var2 = enquo(var2)
data %>%
dplyr::mutate(x = ((!!var1) - (!!var2))) %>%
pull(x)
}
get.diff(A, B)
[1] 452 3450 -937 3380 290 8 190