在dplyr中的mutate_at中按名称排除列

Gop*_*ala 22 r dplyr

我正在尝试做一些非常简单的事情,但却无法找出正确的指定方式.我只想从中排除一些命名列mutate_at.如果我指定位置,它工作正常,但我不想硬编码位置.

例如,我想要相同的输出:

mtcars %>% mutate_at(-c(1, 2), max)
Run Code Online (Sandbox Code Playgroud)

但是,通过指定mpgcyl列名称.

我尝试了很多东西,包括:

mtcars %>% mutate_at(-c('mpg', 'cyl'), max)
Run Code Online (Sandbox Code Playgroud)

有没有办法处理名称和排除mutate_at

Mar*_*ius 42

您可以使用它vars来指定列,其工作方式select()与使用相同,并允许您使用-以下方法排除列:

mtcars %>% mutate_at(vars(-mpg, -cyl), max)
Run Code Online (Sandbox Code Playgroud)


akr*_*run 6

一种选择是将字符串传递到内部 one_of

mtcars %>% 
     mutate_at(vars(-one_of("mpg", "cyl")), max)
Run Code Online (Sandbox Code Playgroud)