在dplyr

时间:2017-06-13 23:00:59

标签: r dplyr

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

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

mtcars %>% mutate_at(-c(1, 2), max)

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

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

mtcars %>% mutate_at(-c('mpg', 'cyl'), max)

有没有办法在mutate_at中使用名称和排除?

2 个答案:

答案 0 :(得分:36)

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

mtcars %>% mutate_at(vars(-mpg, -cyl), max)

答案 1 :(得分:6)

一种选择是在one_of

中传递字符串
mtcars %>% 
     mutate_at(vars(-one_of("mpg", "cyl")), max)