将两个单词的第一个字母大写为两个单词的字符串假设我有一个两个单词的字符串,我想把它们都大写。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")
3 回答
江户川乱折腾
TA贡献1851条经验 获得超5个赞
执行大写的基本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"
在替换参数的更多细节中gsub()
,\\1
说'使用x
匹配第一个子表达式的部分',即x
匹配的部分(^|[[:spacde:]])
。同样,\\2
说使用x
匹配第二个子表达式的部分([[:alpha:]])
。的\\U
是使用支持语法perl=TRUE
和手段,使下一个字符大写。因此对于“邮政编码”,\\1
是“Zip”,\\2
是“代码”,\\U\\2
是“代码”,并且\\1\\U\\2
是“邮政编码”。
该?regexp
页面有助于理解正则表达式,?gsub
将事物放在一起。
- 3 回答
- 0 关注
- 625 浏览
添加回答
举报
0/150
提交
取消