clean_names <- function(.data, unique = FALSE) {
n <- if (is.data.frame(.data)) colnames(.data) else .data
n <- gsub("%+", "_pct_", n)
n <- gsub("\\$+", "_dollars_", n)
n <- gsub("\\++", "_plus_", n)
n <- gsub("-+", "_minus_", n)
n <- gsub("\\*+", "_star_", n)
n <- gsub("#+", "_cnt_", n)
n <- gsub("&+", "_and_", n)
n <- gsub("@+", "_at_", n)
n <- gsub("[^a-zA-Z0-9_]+", "_", n)
n <- gsub("([A-Z][a-z])", "_\\1", n)
n <- tolower(trimws(n))
n <- gsub("(^_+|_+$)", "", n)
n <- gsub("_+", "_", n)
if (unique) n <- make.unique(n, sep = "_")
if (is.data.frame(.data)) {
colnames(.data) <- n
.data
} else {
n
}
}
clean_names(
c(
" a", "a ",
"a %", "a", "$a", "$$$a", "GDP ($)", "GDP (us$)",
"a (#)", "a & b", "#", "$",
"a_cnt",
"Aa&Bb", "camelCasePhrases",
"AlphaBetaGamma", "Alpha Beta", "Beta !!! Gamma",
"a + b", "a - b", "a * b"
)
)
## [1] "a" "a" "a_pct"
## [4] "a" "dollars_a" "dollars_a"
## [7] "gdp_dollars" "gdp_us_dollars" "a_cnt"
## [10] "a_and_b" "cnt" "dollars"
## [13] "a_cnt" "aa_and_bb" "camel_case_phrases"
## [16] "alpha_beta_gamma" "alpha_beta" "beta_gamma"
## [19] "a_plus_b" "a_minus_b" "a_star_b"
df <- read.csv("data-raw/source_data") %>%
clean_names()
LS0tCnRpdGxlOiAiQ2xlYW4sIENvbnNpc3RlbnQgQ29sdW1uIE5hbWVzIgphdXRob3I6ICJOZ3V5ZW4gTmdvYyBCaW5oIgpkYXRlOiAiNy84LzIwMTkiCm91dHB1dDogCiAgaHRtbF9kb2N1bWVudDogCiAgICBjb2RlX2Rvd25sb2FkOiBUUlVFCiAgICBjb2RlX2ZvbGRpbmc6IHNob3cKICAgIG51bWJlcl9zZWN0aW9uczogeWVzCiAgICB0aGVtZTogImRlZmF1bHQiCgotLS0KCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpCmBgYAoKLSBDbGVhbiBmdW5jdGlvbgoKYGBge3J9CmNsZWFuX25hbWVzIDwtIGZ1bmN0aW9uKC5kYXRhLCB1bmlxdWUgPSBGQUxTRSkgewogIG4gPC0gaWYgKGlzLmRhdGEuZnJhbWUoLmRhdGEpKSBjb2xuYW1lcyguZGF0YSkgZWxzZSAuZGF0YQoKICBuIDwtIGdzdWIoIiUrIiwgIl9wY3RfIiwgbikKICBuIDwtIGdzdWIoIlxcJCsiLCAiX2RvbGxhcnNfIiwgbikKICBuIDwtIGdzdWIoIlxcKysiLCAiX3BsdXNfIiwgbikKICBuIDwtIGdzdWIoIi0rIiwgIl9taW51c18iLCBuKQogIG4gPC0gZ3N1YigiXFwqKyIsICJfc3Rhcl8iLCBuKQogIG4gPC0gZ3N1YigiIysiLCAiX2NudF8iLCBuKQogIG4gPC0gZ3N1YigiJisiLCAiX2FuZF8iLCBuKQogIG4gPC0gZ3N1YigiQCsiLCAiX2F0XyIsIG4pCgogIG4gPC0gZ3N1YigiW15hLXpBLVowLTlfXSsiLCAiXyIsIG4pCiAgbiA8LSBnc3ViKCIoW0EtWl1bYS16XSkiLCAiX1xcMSIsIG4pCiAgbiA8LSB0b2xvd2VyKHRyaW13cyhuKSkKICAKICBuIDwtIGdzdWIoIiheXyt8XyskKSIsICIiLCBuKQogIAogIG4gPC0gZ3N1YigiXysiLCAiXyIsIG4pCiAgCiAgaWYgKHVuaXF1ZSkgbiA8LSBtYWtlLnVuaXF1ZShuLCBzZXAgPSAiXyIpCiAgCiAgaWYgKGlzLmRhdGEuZnJhbWUoLmRhdGEpKSB7CiAgICBjb2xuYW1lcyguZGF0YSkgPC0gbgogICAgLmRhdGEKICB9IGVsc2UgewogICAgbgogIH0KfQpgYGAKCi0gRXhhbXBsZSAKCmBgYHtyfQpjbGVhbl9uYW1lcygKICBjKAogICAgIiAgYSIsICJhICAiLAogICAgImEgJSIsICJhIiwgIiRhIiwgIiQkJGEiLCAiR0RQICgkKSIsICJHRFAgKHVzJCkiLAogICAgImEgKCMpIiwgImEgJiBiIiwgIiMiLCAiJCIsCiAgICAiYV9jbnQiLAogICAgIkFhJkJiIiwgImNhbWVsQ2FzZVBocmFzZXMiLAogICAgIkFscGhhQmV0YUdhbW1hIiwgIkFscGhhICAgICAgIEJldGEiLCAiQmV0YSAgISEhIEdhbW1hIiwKICAgICJhICsgYiIsICJhIC0gYiIsICJhICogYiIKICApCikKYGBgCgotIEFwcGx5CmBgYHtyLCBldmFsPUZBTFNFfQpkZiA8LSByZWFkLmNzdigiZGF0YS1yYXcvc291cmNlX2RhdGEiKSAlPiUKICBjbGVhbl9uYW1lcygpCmBgYAoK