Вам нужно mutate_at
вместо
library(dplyr)
train %>% mutate_at(vars(starts_with("feature")), as.character)
Как упоминалось @Gregor, mutate_if
- это когда выбор столбца основан на фактических данных в столбце, а не на именах.
Например,
iris %>% mutate_if(is.numeric, sqrt)
Таким образом, если данные в столбце только числовые, вычисляется квадратный корень.
Если мы хотим объединить несколько операторов vars
в одно, мы можем использовать matches
merchants %>% mutate_at(vars(matches("_id|category_")), as.character)