2014-02-09 29 views
1

這裏是我的數據:R:不能在「+」字符上grep()?

> rep$strand 
    [1] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
    [58] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + 
    [115] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 
    [172] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 
    [229] + + + + + + + + + + + + + + + + + + + + 

"-"分離"+"的希望,我試圖運行下面的命令。

grepl("-",rep$strand) #this gives me a list of TRUE/FALSE that seems correct 
grepl("+",rep$strand) #this is all TRUE for some mysterious reason 

我想不通爲什麼同樣grepl()命令將在"-"工作,但不是在"+"

+0

'+'是一個正則表達式元字符。你需要逃避它來消除它的「內涵」。 –

+0

......這是用反斜槓完成的。他們兩個人。 – Gregor

+0

或grepl(「+」,「some + in here」,fixed = TRUE) – Adrian

回答

6

使用

grepl("\\+", rep$strand) 

grepl("+", rep$strand, fixed = TRUE) 

"+" == rep$strand 
+0

+1以確保完整性,但首先,使用'^ \\ + $'與其他兩個版本等價是否更正確? – BrodieG

+0

@BrodieG前兩個命令是等價的。我同意,可以在第一個命令中使用'^ \\ + $'使其等同於第三個命令。但是,第二個命令不能等同於第三個命令。 –