2017-03-17 23 views
0

我剛剛在R shiny.Basically使用DT在這裏試圖做的是使用從第一個表中篩選第二個表的選擇值。使用一個選定的行子集中的另一個表中有光澤

我Ui.r是

library(shiny) 
library(shinydashboard) 
ui <- dashboardPage(skin="green", 
       dashboardHeader(title="Inventory Management"), 
       dashboardSidebar(disable = TRUE), 
       dashboardBody(fluidRow(column(4,box(status="success", 
          uiOutput("Firstselection"), 
          br(), 
          uiOutput("Secondselection")) 
          ), 
          column(4,infoBoxOutput("salesbox")), 
          column(4,infoBoxOutput("Runoutbox")), 
          column(4,infoBoxOutput("Excessbox"))), 
          actionButton("actionbtn","Run"), 
       fluidRow(tabBox(tabPanel(
        DT::dataTableOutput(outputId="table"),title = "Stock Available for the category chosen",width = 12), 
        tabPanel(DT::dataTableOutput(outputId="asso"),title = "Associated products",width = 12))) 

       )) 

,我的服務器是

server <-function(input, output, session) { 
observeEvent(input$actionbtn, {source('global.r',local = TRUE) 
#choose sub category based on category 
output$Firstselection<-renderUI({selectInput("ray", 
              "Category:", 
              c("All",unique(as.character(bestpred$lib_ray))))}) 
output$Secondselection<-renderUI({selectInput("sray", 
               "Sub Category:", 
               c("All",unique(as.character(bestpred[bestpred$lib_ray==input$ray,"lib_sray"]))))}) 

# Filter data based on selections 
output$table <- DT::renderDataTable({ 
    data <- bestpred 
    if (input$ray != "All"){ 
    data <- data[data$lib_ray == input$ray,] 
    } 
    if (input$sray != "All"){ 
    data <- data[data$lib_sray == input$sray,] 
    } 
    data 
},filter="top" 
) 
output$salesbox<-renderInfoBox({infoBox("Total Sales",sum(data()$Total_Sales),icon = icon("line-chart"))}) 
output$Runoutbox<-renderInfoBox({infoBox("Total Runout",sum(data()$status=="Runout"),icon = icon("battery-quarter"))}) 
output$Excessbox<-renderInfoBox({infoBox("Total excess",sum(data()$status=="Excess"),icon = icon("exclamation-triangle"))}) 



output$asso <- DT::renderDataTable({ 
    asso <- test1 
    s=data[input$tablatable_rows_selected,1] 
    asso <- asso[asso$num_art == s,] 
    asso 
},filter="top") 



})} 

所以,當我選擇在輸出table行我想用它作爲一個過濾器爲我asso

此代碼劑量poup任何錯誤,但輸出表asso始終爲空

+0

兩點:1)你試試這個:http://stackoverflow.com/questions/28274584/get-selected-row - 從-數據表,在閃亮,應用程序嗎? 2)您的示例不可重現:/ – BigDataScientist

回答

2

查找以下廣義的解決方案: 從這裏改編:https://yihui.shinyapps.io/DT-rows/

library(shiny) 
library(DT) 

server <- shinyServer(function(input, output, session) { 

    output$x1 = DT::renderDataTable(cars, server = FALSE) 

    output$x2 = DT::renderDataTable({ 
    sel <- input$x1_rows_selected 
    if(length(cars)){ 
     cars[sel, ] 
    } 

    }, server = FALSE) 

}) 


ui <- fluidPage(

    fluidRow(
    column(6, DT::dataTableOutput('x1')), 
    column(6, DT::dataTableOutput('x2')) 
) 

) 

shinyApp(ui, server) 
+0

感謝您的解決方案:) –

相關問題