在R语言中如何仅将字符串向量中每个字符串的首词大写?
仅大写字符串向量中每个字符串的第一个单词首字母
给定输入向量:
strings <- c('one', 'one two', 'three four', 'five six')
期望输出:
expected.result <- c('One', 'One two', 'Three four', 'Five six')
解决方案1:使用stringr包
借助str_replace()结合正则表达式,仅匹配并转换字符串开头的第一个字符:
library(stringr) result <- str_replace(strings, "^(\\w)", str_to_upper("\\1"))
- 正则
^(\\w)精准匹配字符串开头的第一个单词字符 str_to_upper()将捕获到的该字符转为大写,其余内容保持不变
解决方案2:基础R实现(无需额外包)
用sub()函数结合Perl风格正则完成转换:
result <- sub("^([a-z])", "\\U\\1", strings, perl = TRUE)
^([a-z])匹配字符串开头的小写字母\\U\\1是Perl正则的大写转换标记,perl = TRUE启用该语法,实现首字符大写
验证结果
执行以下代码确认输出符合预期:
all.equal(result, expected.result) # 输出:TRUE
内容的提问来源于stack exchange,提问作者Sebastian Hesse
相关产品推荐
相关产品推荐

