2017-06-02 76 views
1

我正在使用grep做一個不區分大小寫的搜索,但問題是我得到所有包含該模式的值,而不僅僅是完全匹配,但是如果我使用fixed=TRUE會使ignore.case=TRUE參數無效。如何進行不區分大小寫的搜索?

g = c("PLD3","PLD2","PLD2ABC","DTPLD2a") 
r = "pLd2" 
grep(r,g,ignore.case=TRUE,value=TRUE) 
>[1] "PLD2" "PLD2ABC" "DTPLD2a" 

grep(r,g,ignore.case=TRUE,value=TRUE,fixed=TRUE) 
>character(0) 

EDIT

r是用戶輸入,所以基本上可以爲從30,000個基因的列表任何東西,也可以是所有小寫,所有大寫,或它們的混合物都是。 並以我列表g的元件可以是大寫,小寫或它們的混合物(它是15000左右的基因列表)

+2

也許只是將兩者都轉換爲小寫,並檢查它是否相等? '克[tolower的(G)== tolower的(R)]'。 – lukeA

+0

完美地工作,謝謝 – Bea

回答

2

嘗試

g = c("PLD3","PLD2","PLD2ABC","DTPLD2a") 
r <- 'pLd2' 
r2 <- paste('^', r, '$', sep = '') 
grep(r2 , g ,ignore.case = T, value=TRUE) 

[1] "PLD2" 

基本元字符^$強制grep在開始和結束時修復正則表達式。

+0

謝謝,對不起,我沒有指定,'r'是用戶輸入,所以基本上它可以是任何東西。我將用此信息更新信息 – Bea

+1

我編輯了答案以反映您的更新 –

+0

謝謝,它的效果很好! – Bea