В dplyr, как удалить и переименовать столбцы, которые не существуют, управлять всеми именами и называть новую переменную с помощью строки?

Как упростить или выполнить следующие операции с помощью dplyr:

  • Запустите функцию для всех имен data.frame, например mutate_each(funs()) для значений, например.

    names(iris) <- make.names(names(iris))
    
  • Удалить столбцы, которые НЕ существуют (т.е. ничего не удалять), например.

    iris %>% select(-matches("Width")) # ok
    iris %>% select(-matches("X"))     # returns empty data.frame, why?
    
  • Добавить новый столбец по имени (строка), например

    iris %>% mutate_("newcol" = 0) # ok
    
    x <- "newcol"
    iris %>% mutate_(x = 0) # adds a column with name "x" instead of "newcol"
    
  • Переименуйте имя_файла data.frame, который не существует

    names(iris)[names(iris)=="X"] <- "Y"
    
    iris %>% rename(sl=Sepal.Length) # ok
    iris %>% rename(Y=X)             # error, instead of no change
    

Ответ 1

  • Я бы использовал setNames для этого:

iris %>% setNames(make.names(names(.)))
  1. Включить все() в качестве аргумента для выбора:

iris %>% select(-matches("Width"), everything())
iris %>% select(-matches("X"), everything())
  1. По моему мнению, нет другого ярлыка, чем явное обозначение строки, как вы уже делали:

iris %>% mutate_("newcol" = 0)