我想将一系列名称更改为简单的首字母,
假设我有两个名称c("Ben Franklin", "Millard Fillmore")
,我想将它们子集c("BF", "MF")
化为 ,我已经阅读了帮助文件,?gsub
但我无法弄清楚。这里有人可以帮助我吗?
拆分字符串" "
,然后将substr
函数应用于每个组件并使用粘贴折叠结果
> x <- c("Ben Franklin", "Millard Fillmore")
> sapply(strsplit(x, " "), function(x) paste(substr(x, 1, 1), collapse=""))
[1] "BF" "MF"
这将删除所有不是大写字母的内容:
> s <- c("Ben Franklin", "Millard Fillmore")
> gsub("[^A-Z]", "", s)
[1] "BF" "MF"
如果您根据评论有诸如“Allan McCormick”之类的字符串,则这是一个更复杂的正则表达式:
s <- c("Ben Franklin", "Millard Fillmore", "Allen McCormick")
gsub("(.)\\S* *", "\\1", s)
[1] "BF" "MF" "AM"
只用 gsub
gsub(pattern='(.)(.*)[[:space:]](.)(.*)','\\1\\3',c("Ben Franklin", "Millard Fillmore"))
"BF" "MF"