Katakanlah saya memiliki dua kata string dan saya ingin menggunakan keduanya.
name <- c("zip code", "state", "final count")
The Hmisc
paket memiliki fungsi capitalize
yang dikapitalisasi kata pertama, tapi aku tidak yakin bagaimana untuk mendapatkan kata kedua dikapitalisasi. Halaman bantuan untuk capitalize
tidak menyarankan bahwa ia dapat melakukan tugas itu.
library(Hmisc)
capitalize(name)
# [1] "Zip code" "State" "Final count"
Saya ingin mendapatkan:
c("Zip Code", "State", "Final Count")
Bagaimana dengan string tiga kata:
name2 <- c("I like pizza")
r
string
title-case
ATMathew
sumber
sumber
paste0()
bukanpaste(..., sep="")
. Cukup pendek.paste0 ()
tidak menerimacollapse = ...
argumenpaste0(c("a", "b"), collapse = ",")
bekerja dengan baik untuk saya. Mungkin ini fitur terbaru?Ada solusi built-in base-R untuk case title juga:
atau
sumber
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")
hasil dalamHELLO
. Anda mungkin ingin membungkus initolower
dulu, seperti itu:tools::toTitleCase(tolower("HELLO"))
yang mengembalikanHello
Cocokkan ekspresi reguler yang dimulai pada awal
^
atau setelah spasi[[:space:]]
dan diikuti oleh karakter alfabet[[:alpha:]]
. Secara global (g dalam gsub) mengganti semua kejadian seperti itu dengan awal atau ruang yang cocok dan versi huruf besar dari karakter alfabet yang cocok\\1\\U\\2
,. Ini harus dilakukan dengan pencocokan ekspresi reguler gaya-perl.Dalam sedikit lebih detail untuk argumen penggantian
gsub()
,\\1
katakan 'gunakan bagian yangx
cocok dengan sub-ekspresi pertama', yaitu bagian darix
pencocokan(^|[[:spacde:]])
. Demikian juga,\\2
kata gunakan bagian yangx
cocok dengan sub-ekspresi kedua([[:alpha:]])
. The\\U
sintaks diaktifkan dengan menggunakanperl=TRUE
, dan sarana untuk membuat karakter berikutnya Atas kasus. Jadi untuk "Kode Pos", adalah "Kode Pos"\\1
,\\2
adalah "Kode",\\U\\2
adalah "Kode", dan\\1\\U\\2
"Kode Pos".The
?regexp
halaman membantu untuk memahami ekspresi reguler,?gsub
untuk menempatkan sesuatu bersama-sama.sumber
\\u
dan menyerah sebelum menyadari saya seharusnya memanfaatkannya ... agak ironis. Inilah yang saya buat, tidak diperiksa secara menyeluruh terhadap kotak bola yang anehgsub(pattern = "\\b([a-z])", replacement = "\\U\\1", name, perl = TRUE)
tolower(name)
jika ada topi lainnyaGunakan fungsi ini dari
stringi
paketsumber
stri_tans_totitle
fungsi tersebut dengan namastr_to_title()
. Itu hanya stringi :: stri_trans_totitle () di bawah sampulnya, tetapi mungkin menghemat memuat pustaka lain (yang mungkin, pada dasarnya, sudah Anda muat), tergantung pada alur kerja Anda.Alternatif:
sumber
Mencoba:
sumber
Hmisc
mungkin menimpaplyr
'ssummarize
fungsi seperti yang disebutkan di sini: stackoverflow.com/a/35324305/288875Hmisc
sedikit lebih tua dariplyr
...Dari halaman bantuan untuk
?toupper
:sumber
Paket
BBmisc
sekarang berisi fungsicapitalizeStrings
.sumber
Cara alternatif dengan substring dan regexpr:
sumber
Anda juga bisa menggunakan paket snakecase:
https://github.com/Tazinho/snakecase
sumber
Ini memberi Huruf kapital untuk semua kata-kata utama
sumber
> lettercase::str_title_case("HEY HELLO") [1] "HEY HELLO"