2016-02-09 4 views
0

Я хотел бы отобразить отфильтрованный критерий столбца из datatable DT в Shiny R в виде текста или таблицы (так что пользователь знает, что он фильтровал, просматривая другие вкладки в ShinyApp).Shiny R DT: отображает отфильтрованный критерий столбца (диапазоны/варианты) во второй таблице или в виде текста

Здесь не очень простой пример (без вкладки) только для отображения:

library(shiny) 
library(DT) 
library(ggplot2) 

x <- as.numeric(1:1000000) 
y <- as.numeric(1:1000000) 
data <- data.frame(x,y) 

shinyApp(
    ui = fluidPage(dataTableOutput('tableId'), 
       plotOutput('plot1')), 
    server = function(input, output) {  
    output$tableId = renderDataTable({ 
     datatable(data, options = list(pageLength = 100, lengthMenu=c(100,200,300,400,500,600))) 
    }) 
    output$plot1 = renderPlot({ 
     filtered_data <- data[input$tableId_rows_all, ] 
     ggplot(data=filtered_data, aes(x=x,y=y)) + geom_line() 
    }) 
    } 
) 

Так, например, если процеживаем х столбец из 10-100, можно отобразить его как текст под (и в моем оригинале ShinyApp на другой вкладке в tabsetPanel): X column has been filtered 10-100 или что-нибудь в этом роде.

Спасибо за любые советы!

Приветствия

+0

В вашем примере вы нету фильтр для колонок - только для полного DT – Batanichek

ответ

2

Вы можете получить такую ​​информацию от tableId_search_columns

, например

library(shiny) 
library(DT) 
library(ggplot2) 

x <- as.numeric(1:10000) 
y <- as.numeric(1:10000) 
data <- data.frame(x,y) 

shinyApp(
    ui = fluidPage(dataTableOutput('tableId'), 
       plotOutput('plot1'), 
       verbatimTextOutput("txt")), 
    server = function(input, output) {  
    output$tableId = renderDataTable({ 
     datatable(data,filter="top", options = list(pageLength = 100, lengthMenu=c(100,200,300,400,500,600))) 
    }) 
    output$plot1 = renderPlot({ 

     filtered_data <- data[input$tableId_rows_all, ] 
     ggplot(data=filtered_data, aes(x=x,y=y)) + geom_line() 
    }) 
    output$txt=renderText({ 
     aa="" 
     for (i in 1:length(input$tableId_search_columns)){ 
     if(input$tableId_search_columns[[i]]!=""){ 
     aa=paste0(aa,"\n","column ",i, "filter ",input$tableId_search_columns[[i]])} 
     } 
     aa 
    }) 
    } 
) 
+0

Спасибо большое! Это сработало! Cheers –

+0

Последний вопрос, возможно ли получить имя столбца вместо columnId? –

+1

'colnames (data) [i]'? – Batanichek