Принудительный запуск updateSelectizeInput при изменении события - PullRequest
0 голосов
/ 10 января 2019

это мое приложение:

library(shiny)
library(shinydashboard)
library(dplyr) 
data <- mtcars

ui <- dashboardPage(
    dashboardHeader(),
    dashboardSidebar(
        selectizeInput("cyl", "MPG", choices = c(4, 6, 8), selected = 6),
        selectizeInput("carb", "Carb", choices = c(1,2,3,4), selected = c(1,2,3), multiple = TRUE),
        uiOutput("carbui")
    ),
    dashboardBody(
        dataTableOutput("dt"),
        textOutput("carbsoutput")
    )
)

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

    # filtereddata <-  reactive({
    filtereddata <-  eventReactive(input$carb, {

        req(input$carb)
        data <- data %>%
            filter(cyl == input$cyl) %>%
            filter(carb %in% input$carb)
        data
    })

    output$dt <- renderDataTable({
        print("reactive was triggered")
        filtereddata()
    })


    observeEvent(input$cyl, {

        print("observer was triggered")

        vals <- switch(input$cyl,
                       "4" = c(1,2,3),
                       "6" = c(1,2,3,4),
                       "8" = c(1,2,3))

        updateSelectizeInput(session, "carb", "Carb", choices = vals, selected = vals)
    })

}

shinyApp(ui, server)

Я пытался добиться того, чтобы таблица не отображалась дважды при обновлении input$cyl, что происходит, когда я переключаю input$cyl с 4 на 6 без eventReactive. Но проблема в том, что когда я теперь переключаю input$cyl с 4 на 8, eventReactive не срабатывает, так как input$carb не обновляется. Есть ли способ принудительно обновить updateSelectizeInput, чтобы другие события всегда запускались?

...