gsub名字为FL的姓氏

时间:2012-12-04 19:50:24

标签: r gsub

我想将一系列名称改为简单的首字母,

假设我有两个名字c("Ben Franklin", "Millard Fillmore"),我想将它们分配到c("BF", "MF"),我已阅读帮助文件?gsub,但我无法弄明白。这里的任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:2)

拆分" "上的字符串,然后将substr函数应用于每个组件,并使用粘贴折叠结果

> x <- c("Ben Franklin", "Millard Fillmore")
> sapply(strsplit(x, " "), function(x) paste(substr(x, 1, 1), collapse=""))
[1] "BF" "MF"

答案 1 :(得分:2)

这将删除不是大写字母的所有内容:

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

答案 2 :(得分:1)

只用gsub

 gsub(pattern='(.)(.*)[[:space:]](.)(.*)','\\1\\3',c("Ben Franklin", "Millard Fillmore"))

 "BF" "MF"