grep и т.п. при подстановке в скобках - PullRequest
0 голосов
/ 10 сентября 2018

Я работаю со следующим кодом:

server = function(input, output) {

  # Filter data based on selections
  output$table <- DT::renderDataTable(DT::datatable({
    data <- test_results
    if (input$rn != "All") {
      #data <- data[data$rn == input$rn,]
      #data = data[grep(input$rn, data$rn),]
      data = data[data$rn %like% input$rn,]
    }
    data
  }))

}

Проблема в том, что сопоставление строк с использованием как grep, так и% like% работает, когда у меня есть входные значения, такие как == 6. Проблема в том, что обе строки не работают для других входных значений в моих данных, которые имеют круглые скобки, такие как abs (a ) == 6. Как исправить эту строку, чтобы сопоставление строк работало с круглыми скобками и без них? Спасибо!

ОБНОВЛЕНИЕ ДЛЯ РЕПРОДУКЦИОННОГО ПРИМЕРА:

a = matrix(list("abs(a) = 2", "a = 2" , 1, 1), 2, 2)

В качестве примера, мне нужен общий способ фильтрации этой матрицы, где работают оба abs (a) = 2 и a = 2.

a = a [a [0]% like% «filter field»] не работает как в примере

% в% работает, но совпадает только тогда, когда строки совпадают Я хочу, чтобы функциональность% like%, но like не работает, если строка содержит круглые скобки.

1 Ответ

0 голосов
/ 10 сентября 2018

Разобрался:

data = data[gsub("[()]", "", data$rn) %like% gsub("[()]", "", input$rn),]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...