Я думаю, что у вас глянцевое приложение чрезмерно реактивное, так как все функции на сервере выполняются сразу, без ожидания какого-либо выбранного ввода.Так что либо он сломается, либо будет вести себя странно.Таким образом, вы должны отложить реактивность с помощью req()
, validate() / need()
или любой функции observeEvent
или eventReactive()
.
Может быть, этот фрагмент может помочь вам, хотя было бы несколько способов добиться желаемого поведения.
library(shiny)
library(shinydashboard)
library(dplyr)
data(mtcars)
mtcars$age <- sample(x = c(10,20,30,40,50), size = nrow(mtcars), replace = T)
with_demo_vars <- mtcars
ui <- dashboardPage(
dashboardHeader(disable = F, title = "PATH Study"),
dashboardSidebar(sidebarMenu(
menuItem(text = "Population Filter",
uiOutput("choose_age")
)
)
),
dashboardBody(
tableOutput("smoke")
)
)
server <- function(input, output, session) {
output$choose_age <- renderUI({
selectInput("selected_age", "Age", with_demo_vars$age)
})
myData <- reactive({
with_demo_vars %>%
dplyr::filter(age == input$selected_age)
})
output$smoke <- renderTable({
req(input$selected_age)
head(myData())
})
}
shinyApp(ui = ui, server = server)