Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to convert CamelCase to not.camel.case in R

Tags:

r

In R, I'd like to convert

c("ThisText", "NextText")

to

c("this.text", "next.text")

This is the reverse of this SO question, and the same as this one but with dots in R rather than underscores in PHP.

like image 264
Max Ghenis Avatar asked Mar 20 '14 09:03

Max Ghenis


2 Answers

Not clear what the entire set of rules is here but we have assumed that

  • we should lower case any upper case character after a lower case one and insert a dot between them and also
  • lower case the first character of the string if succeeded by a lower case character.

To do this we can use perl regular expressions with sub and gsub:

# test data
camelCase <-  c("ThisText", "NextText", "DON'T_CHANGE")


s <- gsub("([a-z])([A-Z])", "\\1.\\L\\2", camelCase, perl = TRUE)
sub("^(.[a-z])", "\\L\\1", s, perl = TRUE) # make 1st char lower case

giving:

[1] "this.text"    "next.text"    "DON'T_CHANGE"
like image 115
G. Grothendieck Avatar answered Sep 25 '22 13:09

G. Grothendieck


You could do this also via the snakecase package:

install.packages("snakecase")
library(snakecase)

to_snake_case(c("ThisText", "NextText"), sep_out = ".")
# [1] "this.text" "next.text"

Github link to package: https://github.com/Tazinho/snakecase

like image 20
Taz Avatar answered Sep 23 '22 13:09

Taz