str_replace_all仅获得第一

时间:2019-09-24 15:09:41

标签: r regex stringr

我正在尝试创建一个函数,将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 个答案:

答案 0 :(得分:2)

您还可以使用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