Использование dplyr :: mutate_at с условием case_when для другой переменной - PullRequest
0 голосов
/ 21 марта 2020

Я хочу преобразовать набор переменных по-разному в зависимости от условия. Я нашел решение здесь

Пример: я хочу вычесть 4 из всех переменных 'mpg' в 'disp', если 'gear' равно 4, в противном случае я вычту 3.

mtcars %>% 
  mutate_at(vars(mpg:disp),
            funs(case_when(gear == 4 ~ . - 4L, TRUE ~ . -3L))) 

Но я получаю это предупреждение:

funs() is soft deprecated as of dplyr 0.8.0
Please use a list of either functions or lambdas: 

# Simple named list: 
`list(mean = mean, median = median)`
# Auto named with `tibble::lst()`: 
`tibble::lst(mean, median)`
# Using lambdas
`list(~ mean(., trim = .2), ~ median(., na.rm = TRUE))`

This warning is displayed once per session.  

Есть ли лучшее решение моей проблемы, в котором не используется funs()?

1 Ответ

0 голосов
/ 21 марта 2020

repro сделать так

mtcars %>% mutate_at(vars(mpg:disp), ~ case_when(gear == 4 ~ . - 4L, TRUE ~ . -3L)) 
...