只保留大写单词并删除其间的空格

时间:2017-09-13 03:52:55

标签: r regex

我有以下包含个人全名的元素的字符向量。

Invalid argument supplied for foreach()
array_push() expects parameter 1 to be array, null given 

我现在希望提取每个大写字母,删除其间的空格。这将给出首字母缩写。我的预期输出是:

strings <- c("Michelle Jane Smith", "Elise Alice Smith", "Ronald James Smith", "Thomas John Smith")

这可能吗?

4 个答案:

答案 0 :(得分:2)

使用str_extract_all包的stringr命令,您可以提取与大写字母("[A-Z]+")模式匹配的字符并将它们粘贴在一起。

library(stringr)
sapply(str_extract_all(string = strings, pattern = "[A-Z]+"),
        function(a) paste(a, collapse = ""))
#[1] "MJS" "EAS" "RJS" "TJS"

或者您可以只提取strings

中每个单词的第一个字符,而不是查找大写字符
sapply(strsplit(x = strings, split = " "), function(a)
    paste(substr(x = a, start = 1, stop = 1), collapse = ""))
#[1] "MJS" "EAS" "RJS" "TJS"

答案 1 :(得分:2)

gsub

怎么样?
gsub("[a-z]| ", "", strings)
[1] "MJS" "EAS" "RJS" "TJS"

答案 2 :(得分:2)

使用gsub

gsub("[a-z ]", "", strings)

答案 3 :(得分:2)

或使用捕获组

fplot(@(x) 1/x)