將兩個單詞的第一個字母大寫為兩個單詞的字符串假設我有一個兩個單詞的字符串,我想把它們都大寫。name <- c("zip code", "state", "final count")這個Hmisc包有一個capitalize大寫第一個單詞的函數,但我不確定如何將第二個單詞大寫。幫助頁面capitalize并不表示它可以執(zhí)行該任務。library(Hmisc)capitalize(name)# [1] "Zip code" "State" "Final count"我想得到:c("Zip Code", "State", "Final Count")三字串怎么樣:name2 <- c("I like pizza")
3 回答

江戶川亂折騰
TA貢獻1851條經驗 獲得超5個贊
執(zhí)行大寫的基本R函數是toupper(x)
。從幫助文件中可以找到?toupper
您需要的功能:
simpleCap <- function(x) { s <- strsplit(x, " ")[[1]] paste(toupper(substring(s, 1,1)), substring(s, 2), sep="", collapse=" ")}name <- c("zip code", "state", "final count")sapply(name, simpleCap) zip code state final count "Zip Code" "State" "Final Count"
編輯適用于任何字符串,無論字數如何:
simpleCap("I like pizza a lot")[1] "I Like Pizza A Lot"

偶然的你
TA貢獻1841條經驗 獲得超3個贊
匹配從開頭^
或開頭后開始的正則表達式,[[:space:]]
后面跟一個字母字符[[:alpha:]]
。全局(gsub中的g)用匹配的開頭或空格以及匹配的字母字符的大寫版本替換所有這些出現\\1\\U\\2
。這必須使用perl風格的正則表達式匹配來完成。
gsub("(^|[[:space:]])([[:alpha:]])", "\\1\\U\\2", name, perl=TRUE)# [1] "Zip Code" "State" "Final Count"
在替換參數的更多細節(jié)中gsub()
,\\1
說'使用x
匹配第一個子表達式的部分',即x
匹配的部分(^|[[:spacde:]])
。同樣,\\2
說使用x
匹配第二個子表達式的部分([[:alpha:]])
。的\\U
是使用支持語法perl=TRUE
和手段,使下一個字符大寫。因此對于“郵政編碼”,\\1
是“Zip”,\\2
是“代碼”,\\U\\2
是“代碼”,并且\\1\\U\\2
是“郵政編碼”。
該?regexp
頁面有助于理解正則表達式,?gsub
將事物放在一起。
- 3 回答
- 0 關注
- 669 瀏覽
添加回答
舉報
0/150
提交
取消