第一次在這裏發佈海報。我通常能夠在沒有發佈的情況下獲得我所有的答案,但是這個問題真的讓我感到困惑。我是一個沒有JavaScript經驗的中級R用戶。這是我想要做的:交互式數據表:在重新渲染表後保留列過濾器
我有一個數據表,使用交互式閃亮過濾器通過行動按鈕,我的數據的子集,也內置的數據過濾器。操作按鈕通過對數據幀進行子集化來執行批量過濾。我遇到的問題是,只要應用了其中一個批量過濾器,就會重新渲染數據表,並清除所有單個列過濾器。我希望能夠在數據被子集化和表格重新呈現時保持單個列過濾器處於活動狀態。
我已經設法發現,我可以使用輸入$ mytable_search_columns從數據表中輸出和隔離這些信息,但我不知道如何編寫將在重新呈現表時應用此條件的JavaScript。
library(shinyBS)
library(DT)
server <- function(input, output, session) {
df <- reactive({iris})
df.sub <- reactive({
if(input$buttonfilter == 0){
df.sub <- df()
}
if(input$buttonfilter == 1){
df.sub <- subset(df(), subset = Species == 'setosa')
}
df.sub
})
output$mytable <- DT::renderDataTable(df.sub(),
filter = 'top')
output$filters <- renderText({input$mytable_search_columns})
}
ui <- fluidPage(
h3('Button Toggle Filter'),
bsButton("buttonfilter","Show only Setosa", type = 'toggle'),
br(),
br(),
h3('Current filters'),
textOutput('filters'),
br(),
br(),
DT::dataTableOutput('mytable')
)
shinyApp(ui = ui, server = server)
非常感謝。
編輯:
OK我做了它,這樣它應該是可重複的(需要shinyBS和DT包)。
我想要做的是找到一種方法來保持當前的DT過濾器,當表重新呈現基於動作按鈕啓動的子集。在這個例子中,你可以看到表格重新渲染後,過濾器被清除。
謝謝!
你可以創建一個JSFiddle或codepen來說明你的子集?不需要真實的數據... –
嘿,Jeromy。我已經添加了一個使用Iris數據集的示例。謝謝! – Balter
酷!呃......在哪裏?鏈接? –