我正在尝试将Shiny中的反应性UI组合在一起,根据前一个问题的答案显示或隐藏问题,并根据前两个问题的答案显示结果。我尝试使用反应式UI元素实现它,但遇到了一个我认为可以这样描述的问题:
由于Shiny能够自动区分哪些反应组件在屏幕上以及哪些是隐藏的,它只会为可见组件创建值。因此,评估结果的条件失败,因为甚至没有创建第二个问题。
这是一个简化的例子:
library(shiny)
ui <- fluidPage(
radioButtons(inputId = 'one', label = 'Show question two?', choices = c(TRUE, FALSE), selected = FALSE),
uiOutput('two'),
uiOutput('result')
)
server <- function(input, output) {
output$two <- renderUI(
if (input$one) {
radioButtons(inputId = 'two', label = 'Show question three?', choices = c(TRUE, FALSE), selected = FALSE)
}
)
output$result <- renderUI(
if (input$two) {
p("You're done.")
}
)
}
shinyApp(ui = ui, server = server)
我不确定如何给input$two
初始值(FALSE
),以便可以解决条件。我想使用reactiveValue()
可能是一个解决方案,因为最初可以将其设置为FALSE
,但是再一次,我不知道如果存在input$two
,它将如何分配它。