Допустим, у меня есть строка из двух слов, и я хочу использовать их оба с большой буквы.
name <- c("zip code", "state", "final count")
В Hmisc
пакете есть функция, capitalize
которая использует заглавные буквы первого слова, но я не уверен, как получить заглавные буквы для второго слова. Страница справки для capitalize
не предполагает, что он может выполнить эту задачу.
library(Hmisc)
capitalize(name)
# [1] "Zip code" "State" "Final count"
Я хочу получить:
c("Zip Code", "State", "Final Count")
Как насчет строк из трех слов:
name2 <- c("I like pizza")
r
string
title-case
ATMathew
источник
источник
paste0()
вместоpaste(..., sep="")
. Просто короче.paste0 ()
как не принимаетcollapse = ...
аргументpaste0(c("a", "b"), collapse = ",")
у меня отлично работает Возможно, это недавняя особенность?Также есть встроенное решение base-R для заглавия:
или
источник
c("all", "above", "after", "along", "also", "among", "any", "both", "can", "few", "it", "less", "log", "many", "may", "more", "over", "some", "their", "then", "this", "under", "until", "using", "von", "when", "where", "which", "will", "without", "yet", "you", "your")
).tools::toTitleCase("HELLO")
результаты вHELLO
. Вы могли бы хотеть обернуть это вокругtolower
сначала, как так:tools::toTitleCase(tolower("HELLO"))
который возвращаетсяHello
Соответствует регулярному выражению, которое начинается в начале
^
или после пробела[[:space:]]
и сопровождается алфавитным символом[[:alpha:]]
. В мировом масштабе (Г в GSUB) заменить все такие случаи с соответствием начала или пространства , и версии верхнего регистра согласованной буквы алфавита,\\1\\U\\2
. Это должно быть сделано с сопоставлением регулярных выражений в стиле Perl.В чуть более подробно для замены аргумента
gsub()
,\\1
говорит : «использовать частьx
согласования первого суб-выражение», то есть частьx
согласования(^|[[:spacde:]])
. Аналогично,\\2
говорит, использовать частьx
соответствия второго подвыражения([[:alpha:]])
.\\U
Является синтаксис включен, используяperl=TRUE
, и средства , чтобы сделать следующий символ верхнего регистра. Таким образом, для «почтового индекса»\\1
это «Zip»,\\2
«код»,\\U\\2
«код» и\\1\\U\\2
«почтовый индекс»?regexp
Страница полезна для понимания регулярных выражений,?gsub
для сдачи вещей вместе.источник
\\u
и сдался, прежде чем понял, что я должен был использовать его заглавные буквы ... несколько иронично. Вот то, что я придумал, а не тщательно проверял случайные случаи с мячомgsub(pattern = "\\b([a-z])", replacement = "\\U\\1", name, perl = TRUE)
tolower(name)
, есть ли другие заглавные буквыИспользуйте эту функцию из
stringi
пакетаисточник
stri_tans_totitle
превращает его в функцию с именемstr_to_title()
. Это просто stringi :: stri_trans_totitle () под обложками, но может сохранить загрузку другой библиотеки (которую вы, по сути, уже загрузили), в зависимости от вашего рабочего процесса.Альтернатива:
источник
Пытаться:
источник
Hmisc
может отменитьplyr
«ssummarize
функция , как указано здесь: stackoverflow.com/a/35324305/288875Hmisc
немного старше, чемplyr
...Со страницы справки для
?toupper
:источник
Пакет
BBmisc
теперь содержит функциюcapitalizeStrings
.источник
Альтернативный способ с подстрокой и регулярным выражением:
источник
Вы также можете использовать пакет snakecase:
https://github.com/Tazinho/snakecase
источник
Это дает заглавные буквы всем основным словам
источник
> lettercase::str_title_case("HEY HELLO") [1] "HEY HELLO"