Как применить функцию к именам в Tidyverse - PullRequest
1 голос
/ 29 января 2020

Как в заголовке: есть ли функция, которая позволяет применять другую функцию к именам столбцов data frame? Я имею в виду что-то вроде forcats::fct_relabel, которое применяет некоторую функцию к меткам фактора.

Чтобы привести пример, предположим, что у меня есть data.frame, как показано ниже:

X<-data.frame(
   firababst = c(1,1,1),
   secababond = c(2,2,2),
   thiababrd = c(3,3,3)
 )  

X
  firababst secababond thiababrd
1         1          2         3
2         1          2         3
3         1          2         3

Теперь я буду sh чтобы избавиться от abab от имен столбцов, применяя stringr::str_remove. Мой обходной путь включает в себя magrittr::set_colnames:

 X %>% 
   set_colnames(colnames(.) %>% str_remove('abab'))
  first second third
1     1      2     3
2     1      2     3
3     1      2     3

Можете ли вы предложить более верный путь? В идеале что-то вроде:

X %>% 
   magic_foo(str_remove, 'abab')

Ответы [ 2 ]

1 голос
/ 29 января 2020

Вы можете сделать:

X %>%
 rename_all(~ str_remove(., "abab"))

  first second third
1     1      2     3
2     1      2     3
3     1      2     3
0 голосов
/ 29 января 2020

С base R мы можем сделать

names(X) <- sub("abab", "", names(X))
...