Digamos que eu tenho uma sequência de duas palavras e quero colocar as duas em maiúsculas.
name <- c("zip code", "state", "final count")
O Hmisc
pacote tem uma função capitalize
que maiúscula a primeira palavra, mas não sei como obter a segunda palavra maiúscula. A página de ajuda para capitalize
não sugere que ele possa executar essa tarefa.
library(Hmisc)
capitalize(name)
# [1] "Zip code" "State" "Final count"
Eu quero obter:
c("Zip Code", "State", "Final Count")
E quanto a seqüências de três palavras:
name2 <- c("I like pizza")
r
string
title-case
ATMathew
fonte
fonte
paste0()
vez depaste(..., sep="")
. Simplesmente mais curto.paste0 ()
não aceita ocollapse = ...
argumentopaste0(c("a", "b"), collapse = ",")
funciona bem para mim. Talvez este seja um recurso recente?Também há uma solução base-R incorporada para maiúsculas e minúsculas:
ou
fonte
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")
resulta emHELLO
. Você pode querer quebrar esta em torno detolower
primeira, assim:tools::toTitleCase(tolower("HELLO"))
que retornaHello
Corresponde a uma expressão regular que começa no início
^
ou após um espaço[[:space:]]
e é seguida por um caractere alfabético[[:alpha:]]
. Globalmente (g em gsub) substitua todas essas ocorrências pelo início ou espaço correspondente e pela versão em maiúscula do caractere alfabético correspondente\\1\\U\\2
. Isso deve ser feito com a correspondência de expressões regulares no estilo perl.Um pouco mais detalhadamente para o argumento de substituição
gsub()
,\\1
diz 'use a parte dax
correspondência da primeira subexpressão', ou seja, a parte dax
correspondência(^|[[:spacde:]])
. Da mesma forma,\\2
diz usar a parte dax
correspondência da segunda subexpressão([[:alpha:]])
. A\\U
sintaxe é ativada usandoperl=TRUE
, e significa tornar o próximo caractere em maiúscula. Portanto, para "CEP",\\1
é "CEP",\\2
é "código",\\U\\2
é "Código" e\\1\\U\\2
é "Código Postal".A
?regexp
página é útil para entender expressões regulares,?gsub
para organizar as coisas.fonte
\\u
e desisti antes de perceber que eu deveria ter capitalizado isso ... um tanto irônico. Aqui está o que eu vim acima com, não completamente controlados contra um casos bola impargsub(pattern = "\\b([a-z])", replacement = "\\U\\1", name, perl = TRUE)
tolower(name)
se houver outros capsUse esta função do
stringi
pacotefonte
stri_tans_totitle
função nomeadastr_to_title()
. É apenas o stringi :: stri_trans_totitle () sob as capas, mas pode economizar o carregamento de outra biblioteca (que você pode, em essência, já ter carregado), dependendo do seu fluxo de trabalho.Alternativo:
fonte
Experimentar:
fonte
Hmisc
podem substituirplyr
'ssummarize
função como mencionado aqui: stackoverflow.com/a/35324305/288875Hmisc
é um pouco mais velho do queplyr
...Na página de ajuda para
?toupper
:fonte
O pacote
BBmisc
agora contém a funçãocapitalizeStrings
.fonte
Maneira alternativa com substring e regexpr:
fonte
Você também pode usar o pacote snakecase:
https://github.com/Tazinho/snakecase
fonte
Isso fornece letras maiúsculas para todas as principais palavras
fonte
> lettercase::str_title_case("HEY HELLO") [1] "HEY HELLO"