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 rende
This might work if you use is.null() and return your "default" for input$A:
A.r <- reactive({
if(is.null(input$A)) return (1)
input$A
})
Shiny has a function called observeEvent
which I almost always use instead of observer
. It basically runs some code only when a reactive value changes, and by default it ignored NULL values. So here is the code to make your example work (all I had to do is change your observe({
line to observeEvent(A.r(), {
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 })
observeEvent(A.r(), {
A <- A.r()
str(A)
})
}))