将两个单词的第一个字母大写为两个单词的字符串

将两个单词的第一个字母大写为两个单词的字符串

假设我有一个两个单词的字符串,我想把它们都大写。

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")


侃侃尔雅
浏览 632回答 3
3回答

江户川乱折腾

执行大写的基本R函数是toupper(x)。从帮助文件中可以找到?toupper您需要的功能:simpleCap&nbsp;<-&nbsp;function(x)&nbsp;{ &nbsp;&nbsp;s&nbsp;<-&nbsp;strsplit(x,&nbsp;"&nbsp;")[[1]] &nbsp;&nbsp;paste(toupper(substring(s,&nbsp;1,1)),&nbsp;substring(s,&nbsp;2), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sep="",&nbsp;collapse="&nbsp;")}name&nbsp;<-&nbsp;c("zip&nbsp;code",&nbsp;"state",&nbsp;"final&nbsp;count")sapply(name,&nbsp;simpleCap) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zip&nbsp;code&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state&nbsp;&nbsp;&nbsp;final&nbsp;count&nbsp; &nbsp;&nbsp;&nbsp;"Zip&nbsp;Code"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"State"&nbsp;"Final&nbsp;Count"编辑适用于任何字符串,无论字数如何:simpleCap("I&nbsp;like&nbsp;pizza&nbsp;a&nbsp;lot")[1]&nbsp;"I&nbsp;Like&nbsp;Pizza&nbsp;A&nbsp;Lot"

偶然的你

匹配从开头^或开头后开始的正则表达式,[[:space:]]后面跟一个字母字符[[:alpha:]]。全局(gsub中的g)用匹配的开头或空格以及匹配的字母字符的大写版本替换所有这些出现\\1\\U\\2。这必须使用perl风格的正则表达式匹配来完成。gsub("(^|[[:space:]])([[:alpha:]])",&nbsp;"\\1\\U\\2",&nbsp;name,&nbsp;perl=TRUE)#&nbsp;[1]&nbsp;"Zip&nbsp;Code"&nbsp;&nbsp;&nbsp;&nbsp;"State"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"Final&nbsp;Count"在替换参数的更多细节中gsub(),\\1说'使用x匹配第一个子表达式的部分',即x匹配的部分(^|[[:spacde:]])。同样,\\2说使用x匹配第二个子表达式的部分([[:alpha:]])。的\\U是使用支持语法perl=TRUE和手段,使下一个字符大写。因此对于“邮政编码”,\\1是“Zip”,\\2是“代码”,\\U\\2是“代码”,并且\\1\\U\\2是“邮政编码”。该?regexp页面有助于理解正则表达式,?gsub将事物放在一起。
打开App,查看更多内容
随时随地看视频慕课网APP