从字符串中删除括号

mik*_*ike 27 string grep substring r

我试图从R中的字符串中删除一个括号,并遇到以下错误:

string <- "log(M)"
gsub("log", "", string) # Works just fine
gsub("log(", "", string) #breaks
# Error in gsub("log(", "", test) : 
#   invalid regular expression 'log(', reason 'Missing ')''
Run Code Online (Sandbox Code Playgroud)

Ben*_*ker 56

使用双反斜杠转义括号:

gsub("log\\(", "", string)
Run Code Online (Sandbox Code Playgroud)

(必需品:http://xkcd.com/234/)


Jos*_*ien 15

Ben的答案为您提供了良好的普遍适用的方法.

或者,在您的情况下,您可以使用fixed=TRUE参数,如下所示:

gsub("log(", "", string, fixed=TRUE)
# [1] "M)"
Run Code Online (Sandbox Code Playgroud)

只要pattern参数to gsub()是包含您要搜索的文字字符序列的字符串,它就是合适的.然后,它很好,因为它允许您键入您正在搜索的确切模式,没有转义等.

  • @BenBolker-奇怪 它应该是`fixed = TRUE`,但是`fixed =“ TRUE”`,'fixed =“ true”`和`fixed =“ True”`也都可以。其他组合,例如`fixed =“ TRue”`或`fixed =“ TruE”`则没有。相关地(?)我最近意识到,`rnorm(“ 9”)`(例如)可以工作,但我认为不行。(FWIW,`rnorm(“ 9”,“ 1”)`*不起作用。)我想知道这些情况是否与底层C代码处理传递给它的参数的方式有关。你怎么看? (2认同)