I am trying to use a reactivity model with one input affecting several outputs as describe in the shiny cheat sheet. I need to use renderUI because the choices list is rendered dynamically (not shown in the example) However, during initialization selectInput returns NULL rather than the default value. After that first NULL value the input works as expected. I am new to shiny and might be doing something wrong.
This can be resolved by catching the NULL with an if return statement, but there might be a better solution.
UPDATE: other controls unexpectedly returned not only NULL, but also NA after initialization.
See code below. See the console output, the first input returning NULL.
Listening on http://127.0.0.1:6211
NULL
chr "1"
chr "2"
chr "1"
library(shiny)
runApp(list(
ui = bootstrapPage(
fluidPage( uiOutput('ui.A') )
),
server = function(input, output){
output$ui.A = renderUI({
selectInput("A", label = h4("input A"),
choices = list(A_1=1, A_2=2),
selected = 1)
})
A.r <- reactive({input$A })
observe({
A <- A.r()
str(A)
})
}))To view this discussion on the web visit https://groups.google.com/d/msgid/shiny-discuss/67af8c5e-ca92-44bc-8530-9cc5b4223619%40googlegroups.com.--
You received this message because you are subscribed to the Google Groups "Shiny - Web Framework for R" group.
To unsubscribe from this group and stop receiving emails from it, send an email to shiny-discus...@googlegroups.com.
output$select_class <- renderUI({ selectInput(inputId = 'selected_class', label = 'Select a class', choices = as.list(classes))})
students_count_class <- reactive({ validate(need(input$selected_class, message = F)) StudentsInClass <- StudentsPerClass %>% filter(class == input$selected_class) # filter data table using selected input sum(StudentsInClass$count) # sum the students count})
output$students_in_class <- renderValueBox({ valueBox(students_count_class(), 'Students') # display count in a value box })