在R中使用sub()函数时,如何使用星号通配符替换指示符之后(或之前)的所有字符?
如果我们想要在之后删除下划线和所有任意文本:
x <- c("a_101", "a_275", "b_133", "b_277")
以下代码不会删除任何内容:
sub(pattern = "_*", replacement = "", x = x)
[1] "a_101" "a_275" "b_133" "b_277"
期望的输出:
"a" "a" "b" "b"
为什么通配符会失败?
答案 0 :(得分:1)
如果使用sub,则必须指定要替换的所有内容以及要替换它的内容。在这里,我使用组函数为感兴趣的信件做了这个。
sub('([a-z])_\\d+', replacement = '\\1', x)
[1] "a" "a" "b" "b"
使用通配符也可以。
sub('([a-z])_.*', replacement = '\\1', x)
[1] "a" "a" "b" "b"
最后更多的是你所想的:
sub('_.*', replacement = "", x)
[1] "a" "a" "b" "b"