Shiny 无功值的初始值

Shiny 无功值的初始值,shiny,Shiny,我试图在Shiny中组合一个反应式UI,它根据前一个问题的答案显示或隐藏一个问题,结果取决于前两个问题的答案。我尝试使用反应式UI元素实现它,但遇到了一个问题,我认为可以这样描述: 由于Shining会自动区分屏幕上哪些是反应组件,哪些是隐藏组件,因此它只为可见组件创建值。因此,评估结果的条件失败,因为第二个问题甚至没有创建 下面是一个简化的示例: library(shiny) ui <- fluidPage( radioButtons(inputId = 'one', label

我试图在Shiny中组合一个反应式UI,它根据前一个问题的答案显示或隐藏一个问题,结果取决于前两个问题的答案。我尝试使用反应式UI元素实现它,但遇到了一个问题,我认为可以这样描述:

由于Shining会自动区分屏幕上哪些是反应组件,哪些是隐藏组件,因此它只为可见组件创建值。因此,评估结果的条件失败,因为第二个问题甚至没有创建

下面是一个简化的示例:

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)
库(闪亮)

ui您可以使用
req
检查是否存在这样的内联变量。基本上,它添加了一个
is.null
检查(如@Winicius Sabino的答案),如果不符合标准,则取消输出

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 (req(input$two)) {
      p("You're done.")
    }
  )
}

shinyApp(ui = ui, server = server)
库(闪亮)

ui在创建变量之前,是否要为其赋值?使用输入$two变量的不存在条件是否可以解决您的问题?是否参考
exists()
?我试图使用它,但它似乎不适用于被动值?确实
exists()
不起作用,但
is.null()
起作用。