Если мы передаем символьный вектор, используйте one_of
, который является каноническим способом удаления столбцов
library(dplyr)
df %>%
mutate_at(vars(-one_of(c("var_not_to_be_modified"))), as.numeric)
# A tibble: 10 x 2
# var_not_to_be_modified var_to_be_modified
# <chr> <dbl>
# 1 F 1
# 2 F 1
# 3 T 1
# 4 F 0
# 5 T 0
# 6 F 1
# 7 T 1
# 8 T 1
# 9 F 0
#10 T 1
Согласно ?select_helpers
one_of (): сопоставляет имена переменных в символьном векторе.
Если мы передадим имя столбца, которого нет в данных, поведение будет другим. Здесь это не приведет к ошибке
df %>%
mutate_at(vars(-one_of("hello")), as.numeric)
и
df %>%
mutate_at(vars(-hello), as.numeric)
Ошибка в is_character (x): объект 'hello' не найден
Другими словами, если OP хотел, чтобы весь конвейер заканчивался ошибкой, второй вариант лучше, и если он все еще работает, но с предупреждением, можно использовать параметр в этом посте