Как установить AND "&" multi условия для удаления строк с помощью "!" Data.table способ R - PullRequest
0 голосов
/ 26 октября 2018

Как правило, удалить выражение data.table works, 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 () является обязательным

1 Ответ

0 голосов
/ 26 октября 2018

Как уже говорили Фрэнк и другие: вам нужны круглые скобки, чтобы ваше отрицание сводило на нет весь аргумент, а не только первую часть.

Кроме того, если вы должны использовать 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
...