это мое приложение:
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, чтобы другие события всегда запускались?