我想将一系列名称改为简单的首字母,
假设我有两个名字c("Ben Franklin", "Millard Fillmore")
,我想将它们分配到c("BF", "MF")
,我已阅读帮助文件?gsub
,但我无法弄明白。这里的任何人都可以帮助我吗?
答案 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"