Оценка dplyr: select() против mutate()

Кто-нибудь может объяснить, почему подход dplyr, который работает с select(), не работает с mutate()?

Минимальный рабочий пример:

data <- as.tibble(cbind(c(1,2,3,4),c(5,6,7,8)))
func <- function(data, var){
  data %>% select(!!var)
}
func2 <- function(data, var){
  data %>% mutate(!!var/10)
}

В этом MWE работает func(data,quo(V1)). func2(data, quo(V1)) нет, он выплевывает Error in var/10 : non-numeric argument to binary operator. То есть та же самая стратегия, которая позволяет select() правильно оценить "var" как "V1", не позволяет mutate() сделать то же самое.

Есть ли какая-то причина, какие-то обходные пути?


person PaoloCrosetto    schedule 08.01.2018    source источник


Ответы (1)


Нужно только маленькое исправление, указать имя нового столбца и добавить скобки.

func2 <- function(data, var){ data %>% mutate(V3 = (!!var)/10) }

person tlask    schedule 28.01.2018