簡體   English   中英

R data.table%like%with logical AND

[英]R data.table %like% with logical AND

我正在嘗試構建一個搜索引擎的Shiny應用程序。 我根據搜索關鍵字返回data.table:

DT <- data.table(field = c("A_B_C","A_C_D","A_D_A","B_A_D","B_C_F","B_D_K"))

DT[field %like% "A|B"]

以上內容返回包含A或B的所有字段。如果我想要A和B:

DT[field %like% "A"][field %like% "B"]

是否有一種語法允許我對任意數量的關鍵字執行上述操作。 就像是:

DT[field %like% "A & B & C"]

如果只有兩個元素,請單獨比較它們,然后執行&和子集數據集

DT[field %like% "A" & field %like% "B"]
#  field
#1: A_B_C
#2: B_A_D

如果要比較許多字符串,請使用ReduceMap

DT[Reduce(`&`, Map(`%like%`, list(field), c("A", "B")))]
#    field
#1: A_B_C
#2: B_A_D

或者你可以使用Perl的正則表達式的風格 ,結合grepl您的內部data.table

pat <- "(?=.*A)(?=.*B)"
DT[grep(pat, field, perl = TRUE),]
#   field
#1: A_B_C
#2: B_A_D

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM