str_replace_all только становится первым - PullRequest
1 голос
/ 24 сентября 2019

Я пытаюсь сделать функцию переименования всех столбцов data.frame в случай змеи.Вот пример:

tibble("DateOfDeath" = NA,
       "Death" = NA,
       "Operative_Death" = NA) %>% 
  rename_all(function(x){str_replace_all(string = x, 
                                         pattern = '([[:alnum:]])([[:upper:]])([[:lower:]])', 
                                         replacement = '\\1_\\2\\3')}) %>% 
  rename_all(tolower)

Я не могу понять, почему я получаю «date_ofdeath» вместо «date_of_death».Похоже, что в строке есть еще одна серия буквенно-цифровых символов, прописных и строчных букв, но str_replace_all не перехватывает ее.

Спасибо!

1 Ответ

2 голосов
/ 24 сентября 2019

Вы также можете использовать библиотеку snakecase, которая в основном была создана для таких вещей:

tibble("DateOfDeath" = NA,
       "Death" = NA,
       "Operative_Death" = NA) %>%
 rename_all(to_snake_case)

  date_of_death death operative_death
  <lgl>         <lgl> <lgl>          
1 NA            NA    NA     
...