Каковы логические выражения для Shiny DT :: datatable? - PullRequest
1 голос
/ 25 июня 2019

В R Shiny есть опция, которая позволяет выполнять поиск по 'regexp'.Допустим, у нас есть 2 строки для поиска: «Merc 230» и «Merc 280».Рабочее регулярное выражение "ИЛИ" - "Merc 230 | Merc 280".Какой будет регулярное выражение для операторов AND и NOT?

library(DT)

DT::datatable(mtcars,  options = list(
    search = list(regex = TRUE)))

Строка в поле «Поиск» с данными:

1 - ИЛИ: Merc 230 |Merc 280 - работа

2 - И: Merc 230 и Merc 280 - не работа

3 - НЕ:!Merc 230 и Merc 280 - не работают

Спасибо

1 Ответ

0 голосов
/ 26 июня 2019

Я не эксперт по регулярным выражениям, но у меня есть следующие примеры для вас.Работа с str_detect() из пакета stringr.Я не уверен, что они также работают с DT::datatable, но я ожидаю, что они будут.

library(stringr)

dummy <- c("Merc 220 Merc 210", "Merc 230 xxx Merc 280", "Merc 220 xxx Merc 280")

pattern1 <- "Merc 230|Merc 280"
str_detect(dummy, pattern1)
pattern2 <- "Merc 230.*Merc 280"
str_detect(dummy, pattern2)
pattern3 <- "^(?!(.*Merc 230.*|.*Merc 280.*))"
str_detect(dummy, pattern3)

Шаблон .* обозначает ноль или более символов любого вида.^(?!.*...) означает начало строки, за которой не следуют ноль или более символов любого типа и выражение, которое вы хотите исключить.

Чтобы узнать больше о регулярных выражениях, я бы рекомендовал прочитать Rstudio Cheatsheet по строкам .

...