为什么asterisk通配符失败并带有sub()命令? [R]

时间:2018-04-18 16:39:41

标签: r replace

在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"

为什么通配符会失败?

1 个答案:

答案 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"