2016-02-12 5 views
0

У меня есть таблица с полем ключевых слов, связанная с каждой записью, многие из которых содержат несколько ключевых слов. Ключевые слова в настоящее время ограничены точкой с запятой, как в примере ниже.Поле с несколькими ключевыми словами в таблице DT в Shiny

author keywords 
Shaw Anticyclonic eddy; Arctic halocline 
Eddie Nonhydrostatic modeling 

Можно ли рассматривать их независимо друг от друга таким образом, что при поиске одного, в частности, в таблице сделаны с DT package, каждые записи, где она присутствует проявляется?

Например, я хочу, чтобы пользователь мог искать либо «антициклический вихрь», либо «арктический галоклин». Поле поиска по умолчанию в datatables рассматривает эту запись как один элемент: «Anticyclonic вихрь, арктический галоклин», но я хочу, чтобы это были два отдельных элемента, которые можно было найти отдельно.

Как мне это сделать?

ответ

1

Не совсем понятно, как вы хотите, чтобы текст был просмотрен, или что вы хотите получить от него, поэтому пример вывода будет хорошим.

Однако, от того, что вы описали, это звучит как поле «Поиск» в верхней части DT делает это для вас

Однако, если вы хотите, чтобы ваш собственный контроль над ним, чтобы получить отдельную таблицу , вы можете сделать:

server.R

library(shiny) 
library(shinydashboard) 
library(DT) 

dt <- data.frame(author = c("Shaw", "Eddie"), 
       keywords = c("Anticyclonic eddy; Arctic halocline", "Nonhydrostatic modeling")) 


function(input, output, session) { 

    output$dt_data <- renderDataTable({ 
     dt_data <- dt 
    }) 

    ## search dt for text 
    output$dt_found <- renderDataTable({ 

     if(input$txt_search==""){ 
      dt_found <- NULL 
     }else{ 
      txt <- input$txt_search 
      dt_data <- dt 

      dt_found <- dt_data[ grep(txt, dt_data$keywords), ] 
     } 
     return(dt_found) 
    }) 
} 

ui.R

library(shiny) 
library(shinydashboard) 
library(DT) 

dashboardPage(
    dashboardHeader(), 
    dashboardSidebar(), 
    dashboardBody(
     dataTableOutput(outputId = "dt_data"), 
     textInput(inputId = "txt_search", label = "Search"), 
     dataTableOutput(outputId = "dt_found") 
    ) 
) 
Смежные вопросы