Я пишу функцию для автоматизации очистки имен переменных для создания однородных имен переменных. Как правило, преобразование что-то вроде «Это пример» в «This.Is.An.Example». Обычно все это довольно просто, однако у меня возникают проблемы с аббревиатурами, содержащимися в именах переменных.
Примером этого является: «Clock in Time PST» в идеале должно стать «Clock.In.Time.PST»
Я рассматривал модификацию str_to_upper как функции, но у меня нет практических знаний о C, который, по-видимому, является основой того, на чем написано stringi.
Моя единственная следующая мысль - сделать что-то сусловная проверка, если строка не имеет пробелов или знаков пунктуации, затем вставьте пробел перед заглавной буквой, учитывая, что предыдущая буква строчная. Это моя единственная реальная мысль, как с этим справиться.
Example<-c("Easy Example Test",
"Medium..example TEst",
"HaRd exampleTEST",
"Truly HARd TestCase PST")
#Step 1 - Removes all punctuation replacing with spaces
Example<-stringr::str_replace_all(Example, "[[:punct:]]", " ")
#Step 2 - This inserts a space wherever an uppercase letter is found with a preceding lowercase letter.
Example<-stringr::str_replace_all(Example,
"([[:lower:]](?=[[:upper:]])|[[:upper:]](?=[[:upper:]][[:lower:]]))",
"\\1 ")
#Step 3 - This replaces all consecutive spaces with a period
Example<-stringr::str_replace_all(names(df), "\\s{1,}", ".")
Current.Outcome<-c("Easy.Example.Test",
"Medium.example.T.Est",
"Ha.Rd.example.TEST",
"Truly.HA.Rd.Test.Case.PST")
Ideal.Outcome<-c("Easy.Example.Test",
"Medium.Example.Test",
"Hard.Example.Test",
"Truly.Hard.Test.Case.PST")