2014-03-07 190 views
26

我想排除包含字符串「REVERSE」的行,但我的行與該詞完全不匹配,只是包含它。刪除R中包含特定字符串的行

我的輸入數據幀:

Value Name 
    55  REVERSE223 
    22  GENJJS 
    33  REVERSE456 
    44  GENJKI 

我的預期輸出:

Value Name 
    22  GENJJS 
    44  GENJKI 
+0

我們爲什麼不改變接受的答案? –

回答

40

這應該做的伎倆:

df[- grep("REVERSE", df$Name),] 

或者一個更安全的版本是:

df[!grepl("REVERSE", df$Name),] 
+4

「安全」是什麼意思? –

+0

如果我想刪除含有「(」以下似乎不工作行:DF [!grepl(「(」 DF $名稱)] – nemja

+0

@nemja的'grepl'函數使用正則表達式如果你設置了命名參數'fixed = TRUE',那麼'grepl'將執行一個文字匹配而不使用正則表達式,這應該適用於你的用例。 – cttlfsh

4

可以使用stri_detect_fixed功能從stringi

stri_detect_fixed(c("REVERSE223","GENJJS"),"REVERSE") 
[1] TRUE FALSE 
13

其實我會用:

df[ grep("REVERSE", df$Name, invert = TRUE) , ] 

這將避免刪除所有的記錄,如果所需的搜索詞是不是在任何包含行。