在R中的长字符向量中格式化字符串(名字和姓氏)

IRNotSmart

我的角色向量中有很多人的名字:

MLB$Names[1:4] [1] "Derek Jeter" "Robinson Cano" "Nick Markakis" "David Ortiz"

我想将它们格式化为包含第一个大写字母,一个句点,然后是一个空格和他们的姓氏。我希望它看起来像以下

MLB$NamesFormatted[1:4] [1] "D. Jeter" "R. Cano" "N. Markakis" "D. Ortiz"

我假设最好的攻击方法是使用grepsub,但是我一生都无法解决。我仍然是使用R的新手,但是我喜欢R的所有功能!

任何帮助将不胜感激!谢谢!

阿克伦

我们可以sub通过捕获第一个字符作为一个组(^(.)),然后捕获一个或多个非空白(\\S+),然后捕获一个或多个空白的另一个捕获组,并以一个或多个字符((\\s+.*))到末尾($)进行捕获来使用字符串并替换为第一个反向引用(\\1),.然后是第二个反向引用(\\2)。

sub("^(.)\\S+(\\s+.*)$", "\\1.\\2", MLB$Names)
#[1] "D. Jeter"    "R. Cano"     "N. Markakis" "D. Ortiz"  

或者可以使用紧凑的代码来实现,该代码可以匹配一个或多个小写字母([a-z]+)并替换为.

sub("[a-z]+", ".", MLB$Names)
#[1] "D. Jeter"    "R. Cano"     "N. Markakis" "D. Ortiz"  

这是另一种选择,strsplit其中我们将一个或多个小写字母后跟一个或多个空格([a-z]+\\s+分开,listwithvapplypaste字符串循环在一起。

vapply(strsplit(MLB$Names, "[a-z]+\\s+"), paste, collapse=". ", character(1))
#[1] "D. Jeter"    "R. Cano"     "N. Markakis" "D. Ortiz"   

数据

MLB <- data.frame(Names = c("Derek Jeter", "Robinson Cano", 
              "Nick Markakis", "David Ortiz"), stringsAsFactors=FALSE)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在模式中格式化lua中的字符串

来自分类Dev

在模式中格式化lua中的字符串

来自分类Dev

在Scala中格式化JSON字符串

来自分类Dev

在Swift中格式化字符串

来自分类Dev

无法在Python中格式化字符串

来自分类Dev

在jsp中格式化datetime字符串?

来自分类Dev

在Android中格式化字符串变量

来自分类Dev

在Swift中格式化字符串

来自分类Dev

在VBScript中格式化XML字符串

来自分类Dev

在PHP中格式化字符串

来自分类Dev

在React Native中格式化日期字符串

来自分类Dev

在Elm中格式化字符串

来自分类Dev

在C ++中格式化字符串的输出

来自分类Dev

在Oracle SQL中格式化字符串

来自分类Dev

在Java中格式化字符串数组

来自分类Dev

在Android中格式化字符串变量

来自分类Dev

在python中格式化字符串

来自分类Dev

在python列表中格式化字符串

来自分类Dev

在 Linux 中格式化日期字符串

来自分类Dev

在字符串插值中格式化变量

来自分类Dev

如何同时在awk中格式化字符串和浮点数?

来自分类Dev

在android按钮中格式化和对齐字符串文本

来自分类Dev

如何格式化JavaScript长字符串日期

来自分类Dev

从字符串中删除不是名字/姓氏字符的字符

来自分类Dev

在datetime c#中格式化字符串以插入到MYSQL datetime列中

来自分类Dev

在sqlite3中格式化SQL查询的字符串

来自分类Dev

`%d` 和 `%y` 在格式化字符串中

来自分类Dev

用*屏蔽名字和姓氏字符串

来自分类Dev

C#-以逗号分隔的字符串中的姓氏,名字