Makes syntactically valid column names
valid_names.RdMakes syntactically valid column names out of character vectors. Replaces invalid characters with underscores.
Arguments
- x
A character vector.
- unique
TRUEorFALSE. IfTRUE, it returns unique names for the case of duplicates.- lowercase
TRUEorFALSE. IfTRUE, it converts text to lower case.- words
A named character vector or
NULL. Use this to replace invalid characters with selected values. The names are the symbols to replace (for example:@,$,%,&, etc.), and the values are their words. Default value ofNULLremoves invalid characters or converts them to underscores.- n_rounds
An integer for the number of rounds needed to fix duplicates.
Examples
#----------------------------------------------------------------------------
# valid_names() examples.
#----------------------------------------------------------------------------
library(bkmisc)
d <- data.frame(
`BaD nAmE_/*iS#^baD ` = c(1, 2, 3),
good_name_is_good = c(4, 5, 6),
check.names = FALSE
)
names(d)
#> [1] "BaD nAmE_/*iS#^baD " "good_name_is_good"
valid_names(names(d))
#> [1] "bad_name_is_bad" "good_name_is_good"
names(d) <- valid_names(names(d))
names(d)
#> [1] "bad_name_is_bad" "good_name_is_good"
d <- data.frame(
`BaD nAmE_/*iS#^baD ` = c(1, 2, 3),
good_name_is_good = c(4, 5, 6),
check.names = FALSE
)
valid_names(
x = names(d),
words = setNames(
c(
"_at_", "_dollars_", "_percent_", "_and_", "_per_", "_geq_", "_geq_",
"_greaterthan_", "_leq_", "_leq_", "_lessthan_"
),
c("@", "$", "%", "&", "/", "≥", ">=", ">", "≤", "<=", "<")
)
)
#> [1] "bad_name_per_is_bad" "good_name_is_good"