2

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

假设我有两个名称c("Ben Franklin", "Millard Fillmore"),我想将它们子集c("BF", "MF")化为 ,我已经阅读了帮助文件,?gsub但我无法弄清楚。这里有人可以帮助我吗?

4

3 回答 3

2

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

> x <- c("Ben Franklin", "Millard Fillmore")
> sapply(strsplit(x, " "), function(x) paste(substr(x, 1, 1), collapse=""))
[1] "BF" "MF"
于 2012-12-04T19:56:32.880 回答
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"
于 2012-12-04T20:24:28.070 回答
1

只用 gsub

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

 "BF" "MF"
于 2012-12-04T19:57:52.480 回答