如何设置AND“&”多条件删除带“!”的行data.table 方式 R

How to set AND "&" multi conditions to remove rows with "!" data.table way R

一般去掉data.table的表达式,DT[!grepl("XXX",COLUMN),]

目标:删除符合3个条件的行

# Like : grepl("BB",RR) & grepl("XLKG",B) & grepl("GA",FF)
  RR    B FF
  1: AA  XLJ KA
  2: BB XLKG CA
  3: BB XLKG GA     <----- remove this rows
  4: BB XLKG FA
  5: BB XLCC GA   

# DATASET
DD <- data.table(RR=c("AA","BB","BB","BB","BB"),B=c("XLJ","XLKG","XLKG","XLKG","XLCC"),FF=c("KA","CA","GA","FA","GA"))

问题:下面的脚本无法应用多删除表达式

DD[!grepl("BB",RR) & grepl("XLKG",B) & grepl("GA",FF),][]
Empty data.table (0 rows) of 3 cols: RR,B,FF

我怎样才能做到这一点? 必须使用 grepl()

正如 Frank 和其他人已经指出的:你需要括号,所以你的否定是在否定整个论点,而不仅仅是第一部分。

此外,如果您必须使用 grepl(),那么如果您不使用任何正则表达式,fixed = TRUE 将提高性能:

DD[!(grepl("BB", RR, fixed = TRUE) & grepl("XLKG", B, fixed = TRUE) & grepl("GA", FF, fixed = TRUE))]

   RR    B FF
1: AA  XLJ KA
2: BB XLKG CA
3: BB XLKG FA
4: BB XLCC GA