我想使用 gsub 来更正我数据中的一些名称。我想要诸如“R.J.”之类的名字和“A.J.”字母之间没有空格。
例如:
x <- "A. J. Burnett"
我想用gsub来匹配他名字的模式,然后去掉空格:
gsub("[A-Z]\\.\\s[A-Z]\\.", "[A-Z]\\.[A-Z]\\.", x)
但我得到:
[1] "[A-Z].[A-Z]. Burnett"
显然,我想要原始名称中的实际字母,而不是 [A-Z]。我怎样才能做到这一点?
最佳答案
通过在 (...)
中包含模式来使用捕获组,并使用 \\1
引用捕获的模式, \\2
, 等等。在这个例子中:
x <- "A. J. Burnett"
gsub("([A-Z])\\.\\s([A-Z])\\.", "\\1.\\2.", x)
[1] "A.J. Burnett"
另请注意,在替换中您不需要转义
.
字符,因为它们在那里没有特殊含义。
关于r - gsub 只是模式的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37425019/