2015-05-05 240 views
8

我是新來shiny但過濾數據表不知道是否有什麼辦法可以存儲過濾數據表(使用列過濾器)在R對象,以便該過濾的數據可以被傳遞到直方圖繪圖函數使用閃亮

編輯15年5月7日:包括評論

我想使用內置列過濾器和 得到過濾表中的作者的擴大解釋,然後想劇情自動調整。我已經嘗試了DT 包,但我不太喜歡帶有此包的 的列過濾器,因爲從表格的子集中刪除 過濾器是不可能的(我認爲)

+1

你的問題目前還不清楚。你是否希望data.table使用用戶選擇的某些輸入進行過濾(如來自'selectInput'小部件的值),然後你的圖自動調整? –

+1

如果您使用'DT'包來呈現您的DataTable'輸入$ table_rows_all'包含過濾行的索引。有一個例子[這裏](https://yihui.shinyapps.io/DT-info/) – NicE

+0

我想讓表格使用內置的列過濾器進行過濾,然後讓圖表自動調整。我已經試過了DT包,但是我不太喜歡這個包附帶的列過濾器,因爲不可能(我認爲)從表格的子集中刪除過濾器。 – jperdigao

回答

5

只是建立在@ JasonAizkalns的例子,你可以隱藏一些使用jQuery的內置列過濾器。比如這裏前兩個是隱藏的:

library(shiny) 
library(DT) 

shinyApp(
    ui = fluidPage(dataTableOutput('tbl'), 
       plotOutput('plot1')), 
    server = function(input, output) {  
    output$tbl = renderDataTable({ 
     datatable(iris, filter="top",options = list(lengthChange = FALSE),callback=JS(" 
      //hide column filters for the first two columns 
      $.each([0, 1], function(i, v) { 
       $('input.form-control').eq(v).hide() 
       });")) 
    }) 
    output$plot1 = renderPlot({ 
     filtered_data <- input$tbl_rows_all 
     hist(iris[filtered_data, "Sepal.Length"]) 
    }) 
    } 
) 
+0

謝謝!這工作完美。 – jperdigao

4

@NicE建議的example非常有幫助。我包括一個小例子如下:

library(shiny) 
library(DT) 

shinyApp(
    ui = fluidPage(dataTableOutput('tbl'), 
       plotOutput('plot1')), 
    server = function(input, output) {  
    output$tbl = renderDataTable({ 
     datatable(iris, options = list(lengthChange = FALSE)) 
    }) 
    output$plot1 = renderPlot({ 
     filtered_data <- input$tbl_rows_all 
     hist(iris[filtered_data, "Sepal.Length"]) 
    }) 
    } 
) 

這將生成的Sepal.Lengthiris數據在DT::datatable的過濾的數據集的直方圖。

注:這是假設的DTshiny以下版本:

DT_0.0.39 shiny_0.11.1.9005